1、登录数据库。
mysql -uroot -pxxxx -h127.0.0.1 -P3306 --prompt xxx
prompt xxx可更改提示符 \D表示完整的日期; \d表示当前数据库;\h服务器名称;\u当前用户。
2、显示
select version(); 显示版本
select now();显示时间
select user();显示用户
3、创建数据库
create database xxx [character set utf8];
4、修改数据库编码
alter database t1 character set utf8;
5、删除数据库
drop database t1;
6、退出
exit quit \q
------------------------------------------------------
7、数据类型
整型 :TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT
浮点型:FLOAT[(M,D)] M表示总位数,D表示小数位数 DOUBLE[(M,D)]
日期类型:YEAR TIME DATE DATETIME TIMESTAMP(一般日期类型用的少,都用字符类型)
字符型:CHAR(M)、VARCHAR(M)、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT、ENUM('value1','value2',...) (枚举类型)、SET('value1','value2',...)(取决于SET成员的数目数)
8、创建数据表
打开数据库:USE XXX
证明所在数据库:SELECT DATABASE();
创建命令:
CREATE TABLE tb1(字段 类型,字段 类型,...)
CREATE TABLE tb1(name VARCHAR(20),age TINYINT UNSIGNED,salary FLOAT(8,2) UNSIGNED);
9、查看数据表
SHOW TABLES;
SHOW TABLES FROM mysql
10、查看数据表结构
SHOW COLUMNS FROM tb;
11、记录的插入
INSERT 数据表名 VALUES(各字段的值); //默认是全部填写
INSERT 数据表名 (字段名) VALUES(字段的值); //只填写给出的字段名的值
12、记录的查找
SELECT * FROM 数据表名
13、字段的属性
NOT NULL 非空
PRIMARY KEY 主键(唯一)
AUTO_INCREMENT 自动编号(唯一)
UNIQUE KEY 唯一约束(可以有多个,可以为空值)
DEFAULT 默认值
字段名 SEX ENUM('1','2','3') DEFAULT '3'
14、外键约束(两个表之间的列可以关联)FOREIGN KEY(外键约束)
注意:父表与子表要有相同的存储引擎INNOBD;外键列与参照列的数据类型必须相同,如果是字符型,字符的长度可以不同。例子:
创建父表:
CREATE TABLE fu(id INT PRIMARY KEY AUTO_INCREMENT,city char(20));
创建子表:
CREATE TABLE zhi(
id INT PRIMARY KEY AUTO_INCREMENT,
name CHAR(20) not null,
pid INT,//存储所在的城市,这个城市在父表中,这就是所谓的外键,它会参照父表中的数据
FOREIGN KEY (pid) REFERENCES fu (id) //REFERENCES参考的意思
);
参数:
CASCADE:从父表删除或更新时自动更新子表
SET NULL:从你表删除或更新行,并设置子表有列为NULL
RESTRICT:拒绝对父表进行删除或更新操作
NO ACTION:标准SQL关键字,在MYSQL中与RESTRICT相同
15、
添加列 ALTER TABLE 表名 ADD 字段名(后可加各种属性)
删除列 ALTER TABLE 表名 DROP 字段名
16、添加主键 ALTER TABLE 表名 ADD PRIMEARY KEY(字段名)
修改默认值 ALTER TABLE 表名 ALTER 字段名 DEFAULT 15;
删除默认值 ALTER TABLE 表名 ALTER 字段名 DROP DEFAULT;
17、删除主键约束
ALTER TABLE 数据表 DROP PRIMARY KEY;
18、删除唯一约束
ALTER TABLE 数据表 DROP INDEX 字段名
19、修改数据表
修改位置:ALTER TABLE 表名 MODIFY ID (可加属性) FIRST|AFTER 列名
修改列名:ALTER TABLE 表名 CHANGE 旧列名 新列名 (可加属性) //还可以修改位置
数据表改名:ALTER TABLE 旧表名 RENAME 新表名 或 RENAME TABLE 旧名 TO 新名
20、插入INSERT 时,默认时可以写成NULL,自动编号不受影响。值可以写成表达式。
可同时插入多条记录如:insert 表名 values(xxx,xxx,xx,xx),(xxx,xxx,xxx,xxx)
还有一种插入方法:insert 表名 set name='xxx',age=xx
还有一种插入方法:insert 表名 select…… 可以把查询到的数据插入到指定位置
21、更新记录
UPDATE 表名 SET age=age+5 //这样把所以年龄都加了5
加条件 UPDATE 表名 SET age=20 WHERE name='Jack'
22、单表删除记录
DELETE FROM 表名 //删除所有记录
加条件 DELETE FROM 表名 where id = 6
23、查找记录
select * from 表
select id,name from 表//只列出一部分
select tb.id,tb.name from 表
select id AS pid,name AS na from tb //AS可以省略,但不建议省略
24、条件过滤
where 对记录进行过滤 如果没有默认指全部记录,后可加函数和运算符
25、查询结果分组
SELECT sex FROM 表 GROUP BY sex
可设置条件分组 SELECT age,name FROM 表 GROUP BY sex HAVING age>20(后面条件的字段必须保证出现在SELECT里,比如age或放聚合函数)
26、查询结果排序
SELECT sex FROM 表 GROUP BY id DESC(翻译为降序)
SELECT sex FROM 表 GROUP BY age,id DESC//可以有两种参照排序
27、限制查询结果返回的数量LIMIT
SELECT * FROM 表 LIMIT 2/3,2;只返回两个记录
28、从一张表按条件查出结果插入到另外一张表
INSERT text(name) SELECT username FROM 另外表 WHERE age>=30;
29、子查询
SELECT AVG(total) FROM TB //AVG是求平均数
SELECT ROUND(AVG(total)) FROM TB //保留小数
SELECT age FROM TB WHERE age>(SELECT AVG(total) FROM TB)//嵌套查询
如果子查询返回了多个结果,可以用ANY、SOME、ALL来修饰
30、把查询的语句写入其他数据表
INSERT TB3(字段) SELECT *********
31、多表更新
UPDATE tdb_doogs INNER JOIN tdb_goods_cates ON goods_cate SET goos_cate = cate_id
创建表的同时把查询结果放入表中
CEREATE TABLE tdb_goods_brands
->(
->brand_id int primary key auto_increment,
->brand_name char(20) not null
->)
->select brand_name from tdb_goods group by brand_name;
32、表的连接略
33、字符函数
SELECT CONCAT(字符串A,字符串B) AS 别名 FROM 数据表 //连接字符串
SELECT CONCAT_WS('分割符',字符串A,字符串B) AS 别名 FROM 数据表 //连接字符串
SELECT FORMAT(13235.62,2) //格式化,第二个参数是小数位数,以千分位显示
SELECT LOWER('ABC') //转换成小写
SELECT UPPER('abc') //转换成大写
SELECT LENGTH('abc') //获取字符串长度
SELECT LTRIM(' abc') //删除前导空格
SELECT RTRIM('abc ') //删除后续空格
SELECT TRIM(BOTH '?' FROM '??abc???') //删除前导和后续空格
SELECT SUBSTRING('MySQL',1,2) //字符串截取
SELECT 'MySQL 'LIKE 'M%'; //模式匹配 %代表任意多个字符,_代表任务一个字符,相当于通配符,返回结果是TURE
例子:SELECT * FROM test WHERE first_name LIKE '%o%'
SELECT REPLACE('???a??bc','?','') //字符串替换
34、数值运算符与函数
CEIL() 进一取整
DIV 整数除法
FLOOR() 舍一取整
MOD 取余数
POWER() 幂运算
ROUND() 四舍五入
TRUNCATE()数字截取