手把手叫会零基础的你使用mysql
登录MySql windows环境进入cmd后,输入: mysql –h localhost –u username –p 再输入密码就可以启动mysql
linux 进入terminal后直接输入: mysql –h localhost -u username -p 随后根据提示输入密码。
其中localhost 是mysql服务器所在的ip,如果是本机可以省略*-h localhost* 或用localhost; username 是登录mysql的用户名。
数据库(DATABASE)相关操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 CREATE DATABASE db_name;show DATABASES; DROP DATABASE db_name; USE db_name; SHOW TABLES; DESC table_name;
数据库中表(TABLE)的操作 查看表的详细结构语句 1 SHOW CREATE TABLE table_name;
几个概念 主键 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 CREATE TABLE table_name(id int primary key, name varchar (50 ), age int , sex varchar (10 ) ); CREATE TABLE table_name(stu_id int , course_id int , name varchar (20 ), grade float , PRIMARY KEY(stu_id,course_id));
外键 如果表A的某一个属性值依赖于表B的主键,则称B为父表,A为子表,A中的这个字段为A的外键,如果父表中的信息改变,则对应子表的数据也会改变
1 2 3 4 5 6 7 8 9 10 CREATE TABLE table_name01(id int PRIMARY KEY, stu_id int , course_id int , score float , grade int , CONSTRAINT c_fk(外键别名) FOREIGN KEY(stu_id,course_id) REFERENCES table_name02(stu_id,course_id) );
约束 表字段的非空约束 指字段中值不能为null
1 2 3 4 5 6 CREATE TABLE table_name(id int primary key not null , name varchar (50 ) not null , stu_id int );
唯一约束 指字段中值不能重复
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 CREATE TABLE table_name(id int primary key auto_increment, stu_id int unique , name varchar (20 ) not null ); CREATE TABLE table_name(id int primary key auto_increment, stu_id int unique , name varchar (50 ) not null , english varchar (20 ) default 'zero' );
表的修改操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 ALTER TABLE old_table_name RENAME [to ] new_table_name;ALTER TABLE table_name MODIFY 属性名 数据类型(修改后的类型);ALTER TABLE table_name CHANGE 旧字段名 新字段名 新数据类型;ALTER TABLE table_name ADD 数据类型 AFTER 字段2 ;ALTER TABLE table_name drop 字段名;ALTER TABLE table_name MODIFY 字段名 FIRST (第一个位置,AFTER 字段,指定字段的后面);ALTER TABLE table_name engine= Mylsam; ALTER TABLE table_name DROP FOREIGN KEY 外键别名; drop table table_name; SHOW CREATE TABLE table_name;
数据库的增删改查操作 数据库的增(insert into)删(delete)改(update)查(select)操作:
添加数据(INSERT INTO) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 INSERT INTO table_name VALUES (值1 ,值2 …); INSERT INTO table_name(字段1 ,字段2 ….) VALUES (值1 ,值2 ….);INSERT INTO table_name [字段列表] VALUES (取舍列表1 ),(取值列表2 )…;INSERT INTO table_name1(字段列表) SELECT (表2 字段) FROM table_name2 WHERE 条件表达式;
更新数据(改)操作(UPDATE) 1 2 3 4 UPDATE table_name SET 字段1 = 值1 ,字段2 = 值2 …WHERE 条件表达式;
删除数据操作(DELETE) 1 2 3 4 5 6 7 DELETE FROM table_nameWHERE 条件表达式;DELETE FROM table_name;
查询数据(QUERY) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 SELECT 字段名列表 FROM table_name [WHERE 条件表达式1 ] [GROUP BY 字段名 [HAVING 条件表达式2 ] ] [ORDER BY 字段名 [ASC (升序)/ DESC (降序)] ] SELECT 字段名 FROM table_nameWHERE 条件;SELECT 字段名 table_name WHERE 字段名 IN (值1 ,值2 …..) SELECT 字段名 FROM table_nameWHERE 字段名 BETWEEN 值1 AND 值2 ;SELECT 字段名 FROM table_name WHERE 字段名 [not ] LIKE 条件;SELECT 字段名 FROM table_name WHERE 字段名 IS [not ]null ; SELECT 字段名 FROM table_name WHERE 条件1 AND 条件2 ; SELECT DISTINCT 字段名 FROM table_name;
分组查询 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 SELECT 字段名 FROM table_name GROUP BY 字段名;SELECT 字段名, GROUP_COUCAT(字段名) FROM table_name GROUP BY 字段名;SELECT 字段名, COUNT (字段名) FROM table_name GROUP BY 字段名 HAVING COUNT (字段名) 条件;SELECT * FROM table_name GROUP BY 字段1 ,字段2 …;SELECT 字段名, COUNT (字段名) FROM table_name GROUP BY 字段名 WITH ROLLUP ;
用limit限制查询数据 1 2 3 4 SELECT * FROM table_name LIMIT a 或(LIMIT a,b);
使用集合函数查询数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 SELECT COUNT (* ) FROM table_name SELECT 字段名, SUM (字段名) FROM table_name WHERE 条件; SELECT AVG (字段名) FROM table_name GROUP BY 字段名; SELECT MAX (字段名)/ MIN (字段名) FROM table_name;
多表连接查询 内连接查询 两个以上表中存在意义相同的字段时,可以用该字段来连接表进行查询.如:
1 2 3 SELECT 字段1 ,字段2 ,字段3 …FROM table_name1 INNER JOIN table_name2 ON table_name1.字段a= table_name2.字段b;
外连接查询 1 2 3 SELECT 字段列表 FROM table_name01 LEFT / RIGHT JOIN table_name02 ON table_name01.字段名= talbe_name02.字段名;
用正则表达式查询 1 2 3 4 5 6 7 8 9 10 SELECT * FROM table_name WHERE 字段名 REGEXP '^a' ; SELECT * FROM table_name WHERE REGEXP 'xx$' ;SELECT * FROM table_name WHERE name REGEXP '^1..y$' ;
表或字段取别名 1 2 3 4 5 6 SELECT * FROM table_name t WHERE t.字段= 值;SELECT t_id as id FROM table_name WHERE t_id= 值 ;
数据库备份 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 # mysqldump命令备份. # 其中db_name是数据库的名称, table1..是表名, backupname.sql表示备份文件的名称,前面可以加个绝对路径 # 如果没有表名将备份 整个数据库 mysqldump –u username –p db_name table1,table2….>backupname.sql; # 备份多个数据库 mysqldump -u username –p –databases db_name1 db_name2… > backupname.sql # 备份所有数据库 mysqldump –u root –p –all-databases > C:\all.sql # 用Mysqlhotcopy工具快速备份 # 数据库还原 # 其中backup.sql是保存的数据库文件 mysql –u root –p < backup.sql