1. 程式人生 > 實用技巧 >MySQL操作庫 操作表(create)

MySQL操作庫 操作表(create)

1. create 操作庫

1)檢視語法

mysql> help create database;
Syntax:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification] ...

create_specification:
    [DEFAULT] CHARACTER SET [=] charset_name | [DEFAULT] COLLATE [=] collation_name

2)建立庫

#1.建庫
mysql> create database db01;
Query OK, 
1 row affected (0.00 sec) #2.建庫2 mysql> create schema db02; Query OK, 1 row affected (0.00 sec) #3.建立已存在的庫不報錯 mysql> create database db01; ERROR 1007 (HY000): Can't create database 'db01'; database exists mysql> create database IF NOT EXISTS db01; Query OK, 1 row affected, 1 warning (0.00 sec)

3)檢視建庫語句

mysql> show create database db01;
+----------+-----------------------------------------------------------------+ | Database | Create Database | +----------+-----------------------------------------------------------------+ | db01 | CREATE DATABASE `db01` /*!40100 DEFAULT CHARACTER SET latin1
*/ | +----------+-----------------------------------------------------------------+ 1 row in set (0.00 sec)

4)建立庫指定字符集和校驗規則

#1.指定字符集建庫
mysql> create database db03 charset utf8;
Query OK, 1 row affected (0.00 sec)

#2.指定字符集和校驗規則建庫
mysql> create database db04 charset utf8 collate utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

mysql> create database db06 charset utf8 collate utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

5)修改庫

#只需要修改字符集和校驗規則
mysql> alter database db05 character set utf8mb4 collate utf8mb4_general_ci;
Query OK, 1 row affected (0.00 sec)

mysql> show create database db05;
+----------+------------------------------------------------------------------+
| Database | Create Database                                                  |
+----------+------------------------------------------------------------------+
| db05     | CREATE DATABASE `db05` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |
+----------+------------------------------------------------------------------+
1 row in set (0.00 sec)

6)刪庫

mysql> drop database db05;
Query OK, 0 rows affected (0.00 sec)

2. create 操作表

1)檢視語法

mysql> help create table;
Syntax:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    (create_definition,...)
    [table_options]
    [partition_options]

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    [(create_definition,...)]
    [table_options]
    [partition_options]
    [IGNORE | REPLACE]
    [AS] query_expression

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    { LIKE old_tbl_name | (LIKE old_tbl_name) }

2)建表

#1.進入庫
mysql> use test;
Database changed

#2.檢視所在庫
mysql> select database();
+------------+
| database() |
+------------+
| test      |
+------------+
1 row in set (0.00 sec)

#3.建表
mysql> create table tb1(id int);
Query OK, 0 rows affected (0.01 sec)

3)資料型別

int            整數            -2^31 --- 2^31-1   (-2147483648 - 2147483647)
tinyint        最小整數        -128 --- 127      #一般用在定義年齡
varchar        字元型別(變長)    #身份證或者名字
char        字元型別(定長)
enum        列舉型別          #性別
datetime    時間型別

4)測試int資料型別

#1.建表
mysql> create table tb1(id int);
Query OK, 0 rows affected (0.01 sec)

#2.指定字符集建表
mysql> create table tb2(id int) charset utf8;
Query OK, 0 rows affected (0.01 sec)

#3.檢視建表語句
mysql> show create table tb2;
+-------+---------------------------------------------------------------------------------------+
| Table | Create Table                                                                          |
+-------+---------------------------------------------------------------------------------------+
| tb2   | CREATE TABLE `tb2` (
  `id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+---------------------------------------------------------------------------------------+
1 row in set (0.01 sec)

#4.查看錶結構
mysql> desc tb1;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)

#5.插入資料
mysql> insert tb1 values('11111111111');
ERROR 1264 (22003): Out of range value for column 'id' at row 1

mysql> insert tb1 values('-2147483648');
Query OK, 1 row affected (0.00 sec)

mysql> insert tb1 values('2147483648');
ERROR 1264 (22003): Out of range value for column 'id' at row 1

mysql> insert tb1 values('-2147483649');
ERROR 1264 (22003): Out of range value for column 'id' at row 1

mysql> insert tb1 values('2147483647');
Query OK, 1 row affected (0.00 sec)
#原因:插入的資料超過資料型別的長度

5)測試char和varchar型別

#1.建表
mysql> create table tb1(id int,name varchar(12));
Query OK, 0 rows affected (0.06 sec)

#2.插入資料
mysql> insert into tb1 values('1','邱導');
Query OK, 1 row affected (0.00 sec)

mysql> insert into tb1 values('1','zengzhigaoxiang');
ERROR 1136 (21S01): Column count doesn't match value count at row 1
#字元超過資料型別的限制值

6)測試enum型別

#1.建表
mysql> create table tb4(id int,name varchar(10),sex enum('man','woman'));
Query OK, 0 rows affected (0.03 sec)

#2.插入資料
mysql> insert into tb4 values('1','邱導','man');
Query OK, 1 row affected (0.00 sec)

mysql> insert into tb4 values('2','劉大維','nan');
ERROR 1265 (01000): Data truncated for column 'sex' at row 1
#如果是列舉型別,必須插入型別指定的值,不能插入額外的值

7)建表測試

#建學生表
id
name
sex
age
cometime

#1.建表
mysql> create table student(id int,name varchar(10),sex enum('','nv'),age tinyint,cometime datetime);
Query OK, 0 rows affected (0.03 sec)

#2.插入資料
mysql> insert into student values('-12573','邱導','','-18',now());
Query OK, 1 row affected (0.00 sec)

#3.檢視資料
mysql> select * from student;
+--------+--------+------+------+---------------------+
| id     | name   | sex  | age  | cometime            |
+--------+--------+------+------+---------------------+
| -12573 | xxxx   | 男   |  -18 | 2020-10-23 18:40:15 |
+--------+--------+------+------+---------------------+
1 row in set (0.00 sec)

8)建表的資料屬性

not null:             非空
primary key:         主鍵(唯一且非空的)
auto_increment:     自增(此列必須是:primary key或者unique key)
unique key:         唯一鍵(單獨的唯一的)
default:             預設值
unsigned:             非負數
comment:            註釋

9)刪除表

mysql> drop table student;
Query OK, 0 rows affected (0.00 sec)

10)修改表

#1.修改表字符集
mysql> alter table play charset utf8mb4;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

#2.修改表名   將play表修改為student表
mysql> alter table play rename student;
Query OK, 0 rows affected (0.01 sec)

#3.給表插入欄位  給student表插入name列
mysql> alter table student add name varchar(10);

#4.給表插入多個欄位
mysql> alter table student add sex enum('',''),add age tinyint;

#5.插入欄位到第一列
mysql> alter table student add id int first;

#6.插入欄位到指定欄位後面
mysql> alter table student add class varchar(12) after id;

#7.刪除欄位
mysql> alter table student drop qiudao;

#8.修改列屬性
mysql> alter table student modify name varchar(20);

#9.修改列的名字和屬性
mysql> alter table student change sex xingbie enum('','');

#10.修改庫的字符集
mysql> alter database taobao charset utf8mb4;