Mysql基本命令整理一

Mysql基本命令

基本命令

1.显示数据库
2.创建/删除/选择数据库
3.显示数据库引擎
4.创建基本表
5.主键约束、外键约束、非空约束、唯一性约束、默认约束
6.查看数据表结构
7.修改数据表包括以下6项
1.修改表名
2.修改字段数据类型或字段名
3.增加/删除字段
4.修改字段的排列位置
5.更改表的存储引擎
6.删除表的外键约束

具体ctrl+f搜索

  1#基本命令
2SHOW DATABASES;
3
4CREATE DATABASE test1;
5
6DROP DATABASE test1;
7
8SHOW ENGINES;
9
10# 创建、删除
11CREATE DATABASE zoo;
12
13SHOW DATABASES;
14
15USE zoo;
16
17DROP DATABASE tb_tmp1;
18
19SHOW DATABASES ;
20
21#创建数据表
22
23CREATE DATABASE test_db;
24
25DROP DATABASE test_db;
26
27USE test_db;
28
29SHOW DATABASES ;
30#创建基本表,没有约束
31CREATE TABLE tb_emp1
32(
33    id INT(11),
34    NAME VARCHAR(25),
35    deptID INT(11),
36    salary FLOAT #当数据范围在±131072(65536×2)以内的时候,float数据精度是正确的,
37);
38
39SHOW TABLES;
40#使用主键约束
41    #单字段主键1
42    #方法一:定义完列之后直接指定唯一索引
43CREATE TABLE tb_emp2
44(
45    id INT(11) PRIMARY KEY,
46    NAME VARCHAR(25),
47    deptId INT(11),
48    salary FLOAT
49);
50    #单字段主键2
51    #方法二:定义完所有列之后指定唯一索引
52CREATE TABLE tb_emp3
53(
54    id INT(11),
55    NAME VARCHAR(25),
56    deptId INT(11),
57    salary FLOAT,
58    PRIMARY KEY(id)
59);
60
61    #多字段联合主键
62CREATE TABLE tb_emp4
63(
64    #id int(11),
65    NAME VARCHAR(25),
66    deptId INT(11),
67    salary FLOAT,
68    PRIMARY KEY(NAME,deptId) #没有ID,直接使用名字和部门编号定义主键
69);
70#外键约束
71    #主表:主键所在表 tb_dept1
72    #子表:关联字段中外键所在表 tb_emp5
73    #注意:子表外键关联父表主键,类型必须一致
74CREATE TABLE tb_dept3
75(
76    id INT(11),
77    NAME VARCHAR(22NOT NULL,
78    location VARCHAR(50)
79);
80
81CREATE TABLE tb_emp9
82(
83    id INT(11) PRIMARY KEY,
84    NAME VARCHAR(25),
85    deptId INT(11),
86    salary FLOAT,
87    CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES tb_dept13(id)
88);
89SHOW TABLES;
90
91#非空约束
92CREATE TABLE tb_emp6
93(
94    id INT(11) PRIMARY KEY,
95    NAME VARCHAR(25NOT NULL,
96    deptId INT(11),
97    salary FLOAT
98);
99#唯一性约束
100    #要求该列唯一,允许为空,但只能出现一个空值,此属性可保证一列/多列不出现重复值
101    #方法一:定义完列之后直接指定唯一索引
102CREATE TABLE tb_dept2
103(
104    id INT(11) PRIMARY KEY,
105    NAME VARCHAR(22UNIQUE,
106    location VARCHAR(50)
107);
108    #方法二:定义完所有列之后指定唯一索引
109CREATE TABLE tb_dept3
110(
111    id INT(11) PRIMARY KEY,
112    NAME VARCHAR(22),
113    location VARCHAR(50),
114    CONSTRAINT sth UNIQUE(NAME#sth 疑问
115);
116/*
117注意:
118unique与 primary key区别
1191.一个表中可以有多个字段声明为unique,而primary key只能有一个;
1202.声明为unique允许NULL存在,而primary key不允许。
121*/

122
123#默认约束
124#如果赋值时,拥有默认约束的列没有复制,则自动设置为默认值
125CREATE TABLE tb_emp7
126(
127    id INT(11) PRIMARY KEY,
128    NAME VARCHAR(25NOT NULL,
129    deptId INT(11DEFAULT 1111#没指定都为11
130    salary FLOAT
131);
132
133#设置表的属性值自动增加
134CREATE TABLE tb_emp8
135(
136    id INT(11) PRIMARY KEY AUTO_INCREMENT,
137    NAME VARCHAR(25NOT NULL,
138    deptId INT(11),
139    salary FLOAT
140);    
141/*
142注意:
143用在希望插入新记录时,自动生成字段的主键值
1441.初始值为1,每增加一条记录,字段值加1;
1452.一个表只能有一个字段使用atuo_increment约束,且该字段必须为主键的一部分;
1463.auto_increment可以约束任何整数类型
147*/

148#测试auto_increment约束
149/*
150注意:
151insert方法并不是sql标准语法,不一定被其他数据库支持
152*/

153INSERT INTO tb_emp8(NAME,salary) VALUES('Lucy',1000),('Lura',1200),('Kevin',1500);    
154
155SELECT * FROM tb_emp8
156
157#查看数据表结构
158/*
1591.describe/desc
1602.show create table 用来显示创建表时的语句
161*/

162DESCRIBE tb_dept1;
163DESC tb_emp7;
164
165SHOW CREATE TABLE tb_emp1;
166SHOW CREATE TABLE tb_emp1\G; #加上\G参数更直观展示,此处没看出来有什么效果
167
168#修改数据表
169/*
1701.修改表名
1712.修改字段数据类型或字段名
1723.增加/删除字段
1734.修改字段的排列位置
1745.更改表的存储引擎
1756.删除表的外键约束
176*/

177#1.修改表名
178SHOW TABLES;
179ALTER TABLE tb_dept3 RENAME tb_deptment3;
180
181#2.修改字段数据类型或字段名
182    #修改字段数据类型
183
184DESC tb_dept2;
185ALTER TABLE tb_detp2 MODIFY NAME VARCHAR(30); #出错错误代码: 1146 Table 'test_db.tb_detp2' doesn't exist
186ALTER TABLE tb_detp2 MODIFY location VARCHAR(55);
187
188    #修改字段名
189DESC tb_dept1;
190ALTER TABLE tb_dept1 CHANGE location loc VARCHAR(50);
191
192/*
193注意:
1941.新字段名的数据类型不可以为空,如果不修改数据类型,填写与原来一致的即可;
1952.change可以实现modify的功能,将新字段名与旧字段名一致,只修改数据类型即可。
196建议:数据库中有数据时,尽量不要更改数据类型
197*/

198#也可以修改为其他数据类型
199ALTER TABLE tb_dept1 CHANGE loc loc INT(50);
200
201#3.增加/删除字段
202    #增加字段
203    #1.添加无完整性约束条件的字段
204DESC tb_dept1;
205ALTER TABLE tb_dept1 ADD managerId INT(10); #默认添加到最后列
206
207    #2.添加有完整性约束条件的字段
208ALTER TABLE tb_dept1 ADD column1 VARCHAR(12NOT NULL;
209
210    #3.在表的第一列添加一个字段
211ALTER TABLE tb_dept1 ADD column2 INT(11FIRST;
212
213    #4.在表的指定列后添加一个字段
214ALTER TABLE tb_dept1 ADD column3 INT(11AFTER NAME;
215
216/*
217注意:
218add 有两个可选参数,分别为:first after
219first:添加为首行字段
220after:添加为指定列之后的字段
221不填默认添加到最后一行
222*/

223
224    #删除字段
225DESC tb_dept1;
226ALTER TABLE tb_dept1 DROP column2;
227
228#4.修改字段的排列位置
229    #修改表字段到第一个字段
230DESC tb_dept1;
231ALTER TABLE tb_dept1 MODIFY column1 VARCHAR(12FIRST;
232
233    #修改表字段到指定字段之后
234AFTER TABLE tb_dept1 MODIFY loc INT(50) AFTER id;
235/*
236错误代码: 1064
237You have an error in your SQL syntax; 
238check the manual that corresponds to your MySQL server version 
239for the right syntax to use near 'after table tb_dept1 modify column1 varchar(12) after loc' at line 1
240*/

241
242#5.更改表的存储引擎
243    #查询数据表采用存储引擎
244SHOW CREATE TABLE tb_deptment3; #ENGINE=MyISAM
245    #修改为InnoDB
246ALTER TABLE tb_deptment3 ENGINE=INNODB#ENGINE=InnoDB
247
248#6.删除表的外键约束
249#外键一旦删除,便会解除主表从表之间的关联关系
250#首先创建一个新表,关联下方tb_emp1
251
252CREATE TABLE tb_emp9
253(
254    id INT(11) PRIMARY KEY,
255    NAME VARCHAR(25),
256    deptId INT(11),
257    salary FLOAT,
258    CONSTRAINT fk_emp9_deptment3 FOREIGN KEY (deptId) REFERENCES tb_deptment3(id);
259);
260
261#出错
262SHOW CREATE TABLE tb_deptment3;
263/*
264tb_deptment3  CREATE TABLE `tb_deptment3` (                                                                                                                                                                                            
265                `id` int(11) NOT NULL,                                                                                                                                                                                                 
266                `name` varchar(22) DEFAULT NULL,                                                                                                                                                                                       
267                `location` varchar(50) DEFAULT NULL,                                                                                                                                                                                   
268                PRIMARY KEY (`id`),                                                                                                                                                                                                    
269                UNIQUE KEY `sth` (`name`)                                                                                                                                                                                              
270              ) ENGINE=InnoDB DEFAULT CHARSET=utf8
271*/

272
273#删除外键
274
275ALTER TABLE tb_emp9 DROP FOREIGN KEY fk_emp9_deptment3 #上方tb_emp9未成功创建,无法测试。
276
277#删除数据表 表中定义和数据均被删除
278    #删除没有被关联的表
279DROP TABLE IF EXISTS tb_dept2; 
280DROP TABLE IF EXISTS tb_dept2,tb_dept1,tb_emp3;  #共 0 行受到影响, 1 个警告
281/*
282注意:
283可以不加IF EXISTS,但是数据表不存在会出现错误提示
284加上用于删除前判断删除的表是否存在,如果不存在,则会收到警告
285*/

286    #删除被其他表关联的主表
287
288    /*
289    1.首先创建两个关联表
290    */

291CREATE TABLE tb_dept2
292(
293    id INT(11) PRIMARY KEY,
294    NAME VARCHAR(22),
295    location VARCHAR(50)
296);
297CREATE TABLE tb_emp10
298(
299    id INT(11) PRIMARY KEY,
300    NAME VARCHAR(25),
301    deptId INT(11),
302    salary FLOAT,
303    CONSTRAINT fk_emp_dept FOREIGN KEY (deptId) REFERENCES tb_dept2(id);
304);
305/*
306出错
307错误代码: 1064
308You have an error in your SQL syntax; 
309check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
310*/

311SHOW TABLES;

有任何问题联系我 1992883611@qq.com

有一些代码无法执行的命令已经标志出来了,请注意。

posted @ 2019-04-12 21:23  山峰的风  阅读(293)  评论(0编辑  收藏  举报