1 MySQL`基本语法总结
2
3 #进入与退出数据库
4 mysql -uroot -ppassword;
5 exit/\q
6 #显示所有库
7 show databases;
8 #创建库
9 create database db_name;
10 #删除库
11 drop database db_name;
12 #使用数据库
13 use db_name;
14 #显示所有表
15 show tables;
16 #创建表
17 create table tb_name(create_difinition.....);
18 #显示建表信息
19 desc tb_name;
20 #删除表
21 drop table tb_name;
22 #指定列插入
23 insert into tb_name(column_name) values(column_values);
24 #全列插入
25 insert into tb_name values(all_values);
26 #多行插入
27 insert into tb_name(column_names) values(value_1),(value_2).....
28 #指定列查询
29 select column_name from tb_name;
30 #全列查询
31 select * from tb_name;
32 #带条件查询
33 select * from tb_name where conditions;
34 #修改数据
35 update tb_name set field_1 = value_1,field_2 = value_2 where a_field = a_value;
36 #删除数据
37 delete from tb_name where a_field = a_value;
38 #表结构修改
39 #添加列
40 alter table tb add name varchar(20) after 字段名/first;
41 #删除列
42 alter table tb drop name;
43 #修改字段类型
44 alter table tb modify gender char(10);
45 #修改字段名称
46 alter table tb change name new_name char(10)
47 #修改表名
48 alter table tb rename to new_student;
49
50 常用权限
51
52 约束类型 默认 非空 唯一 自增长 主键 外键
53 关键字 default not null unique key auto_increment primary key foreign key
54
55 默认
56
57 create table tb(
58 id int,
59 name varchar(20),
60 age int default 18);
61 desc tb;
62 -------+-------------+------+-----+---------+-------+
63 | Field | Type | Null | Key | Default | Extra |
64 +-------+-------------+------+-----+---------+-------+
65 | id | int(11) | YES | | NULL | |
66 | name | varchar(20) | YES | | NULL | |
67 | age | int(11) | YES | | 18 | |
68 +-------+-------------+------+-----+---------+-------+
69 insert into tb(name) values("郭康伦"),("无名"),("墨染"),("南北");
70 select * from tb;
71 id | name | age |
72 +------+-----------+------+
73 | NULL | gkl | 18 |
74 | NULL | nh | 18 |
75 | NULL | 郭康伦 | 18 |
76 | NULL | 无名 | 18 |
77 | NULL | 墨染 | 18 |
78 | NULL | 南北 | 18 |
79 +------+-----------+------+
80
81
82
83
84 非空
85
86 create table tb_1(
87 id int,
88 name varchar(20) not null);
89
90 insert into tb_1(id) values(1);
91 ERROR 1364 (HY000): Field 'name' doesn't have a default value
92
93
94
95
96 唯一
97
98 CREATE TABLE tb2(
99 id int UNIQUE KEY,
100 name varchar(20)
101 );
102 #重复则报错
103
104
105
106
107
108
109
110 自增长
111
112 create table tb3(
113 id int primary key auto_increment,
114 name varchar(20)
115 )auto_increment =100;
116 insert into tb3(name) values("郭康伦"),("南北"),(" 无名");
117 mysql> select * from tb3;
118 +-----+-----------+
119 | id | name |
120 +-----+-----------+
121 | 100 | 郭康伦 |
122 | 101 | 南北 |
123 | 102 | 无名 |
124 +-----+-----------+
125
126
127
128
129
130
131
132
133
134 主键
135
136 主键的作用: 可以唯一标识 一条数据,每张表里面只能有一个主键,。
137 主键特性: 非空且唯一。当表里没有主键的时,第一个出现的非空且为唯一的列,被当成主键。
138
139 create table tb4(
140 id int primary key,
141 name varchar(20) not null
142 );
143 #删除主键约束
144 alter table tb4 drop primary key;
145 #添加主键约束
146 mysql> alter table tb3
147 -> add primary key(id);
148
149
150
151
152
153
154 外键
155
156 外键约束 :保持数据一致性,完整性实现一对多关系。
157 外键必须关联到键上面去,一般情况是,关联到另一张表的主键
158 建立选课系统中的4张表: (学院表,学生表,课程表,选课表) , 并每张表插入4条数据
159
160
161
162 1、学院表
163
164 create table college(
165 college_id int primary key auto_increment,
166 college_name varchar(20) not null);
167
168
169
170 2、学生表
171
172 create table student(
173 student_id int primary key auto_increment,
174 student_name varchar(20),
175 s_id int,
176 foreign key(s_id) references college(college_id));
177
178
179
180
181
182 3、课程表
183
184 create table course(
185 course_id int primary key auto_increment,
186 course_name varchar(20) not null,
187 c_id int,
188 foreign key(c_id) references college(college_id));
189
190
191
192 4、选课表
193
194 create table choice(
195 id_c int,
196 id_s int,
197 primary key(id_s,id_c),
198 foreign key(id_s) references student(student_id),
199 foreign key(id_c) references course(course_id));
200
201
202
203
204
205
206
207 5、插入数据
208
209 insert into college values(null,"外国语学院");
210 insert into college values(null,"土木学院");
211 insert into college values(null,"计算机学院");
212 insert into college values(null,"经管学院");
213
214 ---------------------------------------------------------------------------------------------
215 college_id | college_name |
216 +------------+-----------------+
217 | 1 | 外国语学院 |
218 | 2 | 土木学院 |
219 | 3 | 计算机学院 |
220 | 4 | 经管学院 |
221 +------------+-----------------+
222 ---------------------------------------------------------------------------------------------
223
224
225
226 insert into student values(null,"小明",1);
227 insert into student values(null,"小红",3);
228 insert into student values(null,"郭康伦",2);
229 insert into student values(null,"小白",4);
230 select * from student join college on student.s_id = college.college_id;
231 ---------------------------------------------------------------------------------------------
232 student_id | student_name | s_id | college_id | college_name |
233 +------------+--------------+------+------------+-----------------+
234 | 1 | 小明 | 1 | 1 | 外国语学院 |
235 | 2 | 小红 | 3 | 3 | 计算机学院 |
236 | 3 | 郭康伦 | 2 | 2 | 土木学院 |
237 | 4 | 小白 | 4 | 4 | 经管学院 |
238 +------------+--------------+------+------------+-----------------+
239
240 ---------------------------------------------------------------------------------------------
241
242
243
244
245
246 insert into course values(null,"英语",1);
247 insert into course values(null,"土木结构",2);
248 insert into course values(null,"python",3);
249 insert into course values(null,"经济管理学",4);
250 select * from course join college on course.c_id = college.college_id;
251 -----------+-----------------+------+------------+-----------------+
252 | course_id | course_name | c_id | college_id | college_name |
253 +-----------+-----------------+------+------------+-----------------+
254 | 1 | 英语 | 1 | 1 | 外国语学院 |
255 | 2 | 土木结构 | 2 | 2 | 土木学院 |
256 | 3 | python | 3 | 3 | 计算机学院 |
257 | 4 | 经济管理学 | 4 | 4 | 经管学院 |
258 +-----------+-----------------+------+------------+-----------------+
259
260
261 insert into choice values(1,2);
262 insert into choice values(1,3);
263 insert into choice values(2,2);
264 insert into choice values(2,4);
265 insert into choice values(3,4);
266 insert into choice values(3,3);
267 insert into choice values(4,4);
268 insert into choice values(4,2);
269 select * from choice join student on student_id = choice.id_s join course on course.course_id = id_c;
270
271 id_c | id_s | student_id | student_name | s_id | course_id | course_name | c_id |
272 +------+------+------------+--------------+------+-----------+-----------------+------+
273 | 1 | 2 | 2 | 小红 | 3 | 1 | 英语 | 1 |
274 | 1 | 3 | 3 | 郭康伦 | 2 | 1 | 英语 | 1 |
275 | 2 | 2 | 2 | 小红 | 3 | 2 | 土木结构 | 2 |
276 | 2 | 4 | 4 | 小白 | 4 | 2 | 土木结构 | 2 |
277 | 3 | 3 | 3 | 郭康伦 | 2 | 3 | python | 3 |
278 | 3 | 4 | 4 | 小白 | 4 | 3 | python | 3 |
279 | 4 | 2 | 2 | 小红 | 3 | 4 | 经济管理学 | 4 |
280 | 4 | 4 | 4 | 小白 | 4 | 4 | 经济管理学 | 4 |
281 +------+------+------------+--------------+------+-----------+-----------------+------+
282
283
284
285
286
287
288
289
290
291
292
293
294
295 子查询和连接查询
296
297 数据准备
298
299 create table students(
300 number int UNIQUE KEY auto_increment,
301 name varchar(20) UNIQUE KEY,
302 age int not null,
303 birth date not null
304 )auto_increment=201804001;
305
306 insert into students (name, age, birth) value
307 ( '刘一', 16, '2002-01-01'),
308 ( '陈二', 17, '2002-01-01'),
309 ( '张三', 18, '2002-01-01'),
310 ( '李四', 19, '2002-01-01'),
311 ( '王五', 20, '2002-01-01'),
312 ( '赵六', 21, '2002-01-01'),
313 ( '孙七', 22, '2002-01-01'),
314 ( '周八', 23, '2002-01-01'),
315 ( '吴九', 23, '2002-01-01'),
316 ( '郑十', 23, '2002-01-01');
317 number | name | age | birth |
318 +-----------+--------+-----+------------+
319 | 201804001 | 刘一 | 16 | 2002-01-01 |
320 | 201804002 | 陈二 | 17 | 2002-01-01 |
321 | 201804003 | 张三 | 18 | 2002-01-01 |
322 | 201804004 | 李四 | 19 | 2002-01-01 |
323 | 201804005 | 王五 | 20 | 2002-01-01 |
324 | 201804006 | 赵六 | 21 | 2002-01-01 |
325 | 201804007 | 孙七 | 22 | 2002-01-01 |
326 | 201804008 | 周八 | 23 | 2002-01-01 |
327 | 201804009 | 吴九 | 23 | 2002-01-01 |
328 | 201804010 | 郑十 | 23 | 2002-01-01 |
329 +-----------+--------+-----+------------+
330
331
332 create table subjects(
333 number int(4) unsigned zerofill NOT NULL auto_increment,
334 title varchar(20),
335 duration int,
336 PRIMARY KEY (number)
337 );
338
339
340 insert into subjects (title, duration) value
341 ('python基础', 32),
342 ('python进阶', 16),
343 ('web前端', 16),
344 ('python框架', 32),
345 ('python项目', 32);
346 -------+--------------+----------+
347 | number | title | duration |
348 +--------+--------------+----------+
349 | 0001 | python基础 | 32 |
350 | 0002 | python进阶 | 16 |
351 | 0003 | web前端 | 16 |
352 | 0004 | python框架 | 32 |
353 | 0005 | python项目 | 32 |
354 +--------+--------------+----------+
355
356
357 create table grades(
358 student_number int,
359 subject_number int(4) unsigned zerofill NOT NULL,
360 grade int not null
361 );
362
363
364
365 insert into grades values
366 (201804001, 0001, 90),
367 (201804002, 0001, 89),
368 (201804003, 0001, 88),
369 (201804004, 0001, 87),
370 (201804005, 0001, 86),
371 (201804006, 0001, 85),
372 (201804007, 0001, 84),
373 (201804008, 0001, 83),
374 (201804009, 0001, 82),
375 (201804010, 0001, 81),
376 (201804001, 0002, 80),
377 (201804002, 0002, 79),
378 (201804003, 0002, 78),
379 (201804004, 0002, 77),
380 (201804005, 0002, 76),
381 (201804006, 0002, 75),
382 (201804007, 0002, 74),
383 (201804008, 0002, 73),
384 (201804009, 0002, 72),
385 (201804010, 0002, 71);
386 student_number | subject_number | grade |
387 +----------------+----------------+-------+
388 | 201804001 | 0001 | 90 |
389 | 201804002 | 0001 | 89 |
390 | 201804003 | 0001 | 88 |
391 | 201804004 | 0001 | 87 |
392 | 201804005 | 0001 | 86 |
393 | 201804006 | 0001 | 85 |
394 | 201804007 | 0001 | 84 |
395 | 201804008 | 0001 | 83 |
396 | 201804009 | 0001 | 82 |
397 | 201804010 | 0001 | 81 |
398 | 201804001 | 0002 | 80 |
399 | 201804002 | 0002 | 79 |
400 | 201804003 | 0002 | 78 |
401 | 201804004 | 0002 | 77 |
402 | 201804005 | 0002 | 76 |
403 | 201804006 | 0002 | 75 |
404 | 201804007 | 0002 | 74 |
405 | 201804008 | 0002 | 73 |
406 | 201804009 | 0002 | 72 |
407 | 201804010 | 0002 | 71 |
408 +----------------+----------------+-------+
409
410
411 #查找张三的成绩
412 select name,title,grade from students join grades on students.number = grades.student_number join subjects on subjects.number = grades.subject_number where name = "张三";
413 name | title | grade |
414 +--------+--------------+-------+
415 | 张三 | python基础 | 88 |
416 | 张三 | python进阶 | 78 |
417 +--------+--------------+-------+
418
419
420
421
422 用户权限
423
424 #查看用户
425 select user,host from mysql.user;
426 #修改当前账号密码
427 set password = password("123456");
428 #创建用户
429 create user "gkl"@"%"identified by "123";
430 #查看用户权限
431 show grants for "gkl"@"%";
432 删除用户:
433 drop user 'test'@'localhost';
434 drop user "gkl"@"%";
435 #查看编码
436 show variables like "%char%";
437
438
439
440 mysql配置文件
441
442 /etc/mysql/mysql.conf.d$ vim mysqld.cnf