mysql存储⼀篇⽂章_⼀篇⽂章学完Mysql
在数据库中所有的字符串类型,必须使⽤单引号,不能使⽤双引!
零:数据库引擎
*看你的mysql现在已提供什么存储引擎:
>show engines;
*看你的mysql当前默认的存储引擎:
>show variables like '%storage_engine%';
*查看表的引擎类型(MyISAM、InnoDB)
>show table status from 数据库名 where name='表名';
*你要看某个表⽤了什么引擎(在显⽰结果⾥参数engine后⾯的就表⽰该表当前⽤的存储引擎):mysql删除重复的数据保留一条
>show create table 表名;
*最常使⽤的2种存储引擎:
1.Myisam是Mysql的默认存储引擎,当create创建新表时,未指定新表的存储引擎时,默认使⽤Myisam。每个MyISAM在磁盘上存储成三个⽂件。⽂件名都和表名相同,扩展名分别是.frm(存储表定义)、.MYD(MYData,存储数据)、.MYI(MYIndex,存储索引)。数据⽂件和索引⽂件可以放置在不同的⽬录,平均分布io,获得更快的速度。
2.InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能⼒的事务安全。但是对⽐Myisam的存储引擎,InnoDB写的处理效率差⼀些并且会占⽤更多的磁盘空间以保留数据和索引。
⼀:操作数据库
查看所有数据库:SHOW DATABASES
切换(选择要操作的)数据库:USE 数据库名
创建数据库:CREATE DATABASE [IF NOT EXISTS] 数据库名 [CHARSET=utf8]
删除数据库:DROP DATABASE [IF EXISTS] 数据库名
修改数据库编码:ALTER DATABASE 数据库名 CHARACTER SET utf8
⼆:数据类型
int:整型
double:浮点型,例如double(5,2),表⽰最多5位,必须有2位⼩数。
decimal:浮点型,在表单钱⽅⾯使⽤该类型,因为不会出现精度缺失问题。
char:固定长度字符串类型;char(255)
varchar:可变长度字符串类型;varchar(65535)
text(clob):字符串类型;
clob:包括:tinytext,text,mediumtext,longtext
blob:包括:tinyblod,blod,mediumblod,longblod
date:⽇期类型,格式为:yyyy-MM-dd。
time:时间类型,格式为:hh:mm:ss。
timestamp:时间戳类型。
三:表
*创建表:
CREATE TABLE [IF NOT EXISTS] 表名(
列名 列类型,
列名 列类型,
列名 列类型,
....
列名 列类型
);
*查看当前数据库中所有的表名称:SHOW TABLES;
*查看指定表的创建语句:SHOW CREATE TABLE 表名;
*查看表结构:DESC 表名;
*删除表:DROP TABLE 表名;
*修改表:前缀:ALTER TABLE 表名
>修改之添加列:
ALTER TABLE 表名 ADD(
列名 列类型,
列名 列类型,
...
列名 列类型
)
>修改之修改列类型(如果被修改的列已存在数据,那么新的类型可能会影响到已存在的数据):ALTER TABLE 表名 MODIFY 列名 列类型;
>修改之修改列名:ALTER TABLE 表名 CHANGE 原列名 新列名 列类型;
>修改之删除列:ALTER TABLE 表名 DROP 列名;
>修改表名称:ALTER TABLE 原表名 RENAME TO 新表名;
四:数据操作
*查询表记录:
SELECT * FROM 表名;
*插⼊数据:
INSTER INTO 表名(列名1,列名2,...) VALUES (列值1,列值2,...)
INSTER INTO 表名 VALUES(列值1,列值2,...);
*修改数据:
UPDATE 表名 SET 列名1=列值1,列名2=列值2,...[WHERE 条件]
条件包括:
>条件必须是⼀个boolean类型的值或表达式
>运算符:=、!=、<>、>、=、<=、AND、IN(...)、IS NULL、NOT、OR、AND
is null举例:select * from stu where age is null;
WHERE age>=18 AND age<=80
WHERE age BETWEEN 18 AND 80
WHERE name IN('zhangsan','lisi')
WHERE age IS NULL,不能⽤等号
WHERE age IS NOT NULL
*删除数据:
DELETE FROM 表名 [WHERE 条件];
TRUNCATE TABLE 表名:TUUNCATE是DDL语句,它是先删除drop该表,再create该表.⽽且⽆法回滚。五:DCL
1.创建⽤户
*CREATE USER ⽤户名@IP地址 IDENTIFIED BY '密码'
>⽤户只能在指定的IP地址上登陆
*CREATE USER ⽤户名@'%' IDENTIFIED BY '密码'
>⽤户可以在任意IP地址上登陆
2.给⽤户授权
*GRAND 权限1,...,权限n ON 数据库.* TO ⽤户名@IP地址
>权限、⽤户、数据库
>给⽤户分派在指定的数据库上的指定的权限
>例如:GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON stu.* TO user1@localhost; *GRANT ALL ON 数据库.* TO ⽤户名@IP地址
>给⽤户分派指定的数据库上的所有权限
3.撤销授权
*REVOKE 权限1,...,权限n ON 数据库.* FROM ⽤户名@IP地址;
>撤消指定⽤户在指定数据库上的指定权限
>例如:REVOKE CREATE,ALTER,DROP ON stu.* FROM user1@localhost;
4.查看权限
*SHOW GRANTS FOR ⽤户名@IP地址
>查看指定⽤户的权限
5.删除⽤户
*DROP USER ⽤户名@IP地址
*************************DQL************数据查询语⾔*********************
⼀:基本查询
1:查询所有列
SELECT * FROM 表名;
SELECT * FROM emp;
2:查询指定列
SELECT 列1[,列2,...,列N] FROM 表名;
SELECT empno,enname,sal,comm FORM 表名;
3:完全重复的记录只⼀次
当查询结果中的多⾏记录⼀模⼀样时,只显⽰⼀⾏。⼀般查询所有列时很少会有这种情况,但只查询⼀列或多列时,这种可能就⼤了。
SELECT DISTINCT *|列1[,列2,...,列N] FROM 表名;
SELECT DISTINCT sal FROM emp;
->查询员⼯表的⼯资,如果存在相同的⼯资只显⽰⼀次
4:字段名称修改,列加字符串
SELECT 列1,CONCAT(列2+“%”) FROM 表名 WHERE 条件;
5:列运算
*数量类型的列可以做加、减、乘、除运算
SELECT sal*1.5 FROM emp;
SELECT sal+comm FROM emp;
*字符串类型可以做连续运算
SELECT CONCAT('$',sal) FROM emp;
*转换NULL值
有时需要把NULL转换成其它值,例如comm+1000时,如果comm列存在NULL值,那么NULL+1000还是NULL,⽽我们这时希望把NULL当0来运算。
SELECT IFNULL(comm,0)+1000 FROM emp;
->IFNULL(comm,0) 如果comm中存在NULL值,那么当成0来运算。
*给列起别名
当使⽤列运算后,查询出的结果集中的列名称很不好看,这时我们可以给列起别名,这样在结果集中列名就显⽰别名了
SELECT IFNULL(comm,0)+1000 AS 奖⾦ FORM emp;
->其中AS可以省略
条件查询:
*SELECT empno,ename,sal,comm FROM emp WHERE sal>1000 AND comm IS NOT NULL;
*SELECT empno,ename,sal FROM emp WHERE sal BETWEEN 2000 AND 3000;
*SELECT empno,ename,job FROM emp WHERE job IN('经理','董事长');
6:模糊查询
*SELECT * FROM emp WHERE ename LIKE '张_';
->模糊查询需要使⽤运算符:LIKE,其中_匹配⼀个任意字符,注意,只匹配⼀个字符⽽不是多个。
->上⾯语句查询的是姓张,名字由两个字组成的员⼯。
*SELECT * FROM emp WHERE ename LIKE '___' ;
->上⾯查询姓名由3个字组成的员⼯
SELECT * FROM emp WHERE ename LIKE '张%';
->如果我们想查询姓张,名字⼏个字都可以的员⼯时就要使⽤“%”了。
-
>其中%匹配0~N个任意字符,所以上⾯的语句查询的是姓张的所有员⼯。
SELECT * FROM emp WHERE ename LIKE '%阿%'
->千万不要认为上⾯的语句是查询姓名中间带有“阿”字的员⼯,因为%匹配0~N个字符,所以姓名以阿开头和结尾的员⼯也都会查询到。SELECT * FROM emp WHERE ename LIKE '%';
->这个条件等同与不存在,但如果姓名为NULL的查询不出来。
7:排序
SELECT * FROM emp ORDER BY sal ASC;
->上⾯是升序,默认是升序,ASC可省略
SELECT * FROM emp ORDER BY comm DESC
->按comm降序,DESC不能省略
SELECT * FROM emp ORDER BY sak ASC,comm DESC.
->先按sal升序排,如sal⼀样,按 comm降序排序。
8:聚合函数
聚合函数⽤来做某列的纵向运算
1) COUNT
SELECT COUNT(*) FROM mep;
->计算emp表中所有列都不为NULL的记录的⾏数
SELECT COUNT(comm) FROM emp;
->云计算emp表中comm列不为NULL的记录的⾏数
2) MAX
SELECT MAX(sal) FROM emp;
->查义最⾼⼯资
3) MIN
SELECT MIN(sal) FROM emp;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。