mysql基本语法
Posted kanglun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql基本语法相关的知识,希望对你有一定的参考价值。
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
以上是关于mysql基本语法的主要内容,如果未能解决你的问题,请参考以下文章