一、
# SQL语言分为4个部分:DDL(定义)、DML(操作)、DQL(查询)、DCL(控制)
""" 1、DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER 2、DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE 3、DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE 4、DQL语句 数据库操纵语言:查询数据SELECT """
1、关系型与非关系型数据库
""" mysql数据库管理软件,记录事物一些数据特征: 由库,表,记录组成. 库相当于一个文件夹 表相当于一个文件 记录就是文件里面一条一条的内容 表中的成员属性就是一个一个字段 可以为每个项目建立一个数据库 关系型数据库:表与表之间有联系 比如:mysql,oracle,db2,sqlserver 非关系型数据库: key-value 键值对形式 没有表的概念 比如:redis,mongodb,memcache """
2、SQL语句中的快捷键
""" \G 格式化输出(文本式,竖立显示) \s 查看服务器端信息 \c 结束命令输入操作 \q 退出当前sql命令行模式 \h 查看帮助 """
二、Linux与windows的Mysql服务启停
# windows """ net start mysql net stop mysql """
# Linux """ service mysql start service mysql stop service mysql restart """
三、
""" 登录mysql的完整语法 mysql -u用户名 -p密码 -h地址ip """
例:
# (1) 登录mysql语法 默认root账户 是系统最高权限用户 mysql -uroot -p 127.0.0.1 =>localhost 本地ip地址 # (2) 退出mysql exit 或者 \q # (3) 远程连接mysql服务器 mysql -uroot -p -h192.168.65.135
2、查看登录用户、设置密码
""" # 查询当前登录的用户是谁 select user() # 设置密码 set password = password("123456") # 去除密码 set password = password("") """
3、为某个IP设置账号密码
# 给具体某个ip设置账号密码,用来访问数据库(公网ip) create user ‘ceshi100‘@‘192.168.65.1‘ identified by ‘333‘; # 给具体某个网段下的所有ip设置共同的账号密码,用来访问数据库(公网ip) %代表任意的ip 0~255 create user ‘ceshi101‘@‘192.168.65.%‘ identified by ‘444‘; # 所有的ip都可以登录到服务器数据库中 create user ‘ceshi102‘@‘%‘ identified by ‘555‘;
3.1、为某个用户增加权限
3.1.1、查看权限
show grants for ‘ceshi102‘@‘%‘; # USAGE 没有任何权限 """ +--------------------------------------+ | Grants for ceshi102@% | +--------------------------------------+ | GRANT USAGE ON *.* TO ‘ceshi102‘@‘%‘ | +--------------------------------------+ """
3.1.2、增加权限
grant 权限 on 数据库.表名 to ‘用户名‘%‘ip地址‘ identified by ‘密码‘
""" # 主要权限 select 查看数据表的权限 insert 插入数据表的权限 update 更新数据表的权限 delete 删除数据表的权限 drop 删除数据库的权限 * 代表所有 """
例:
grant select,drop on *.* to ‘ceshi102‘@‘%‘ identified by "333" # all 代表所有权限 grant all on *.* to ‘ceshi102‘@‘%‘ identified by "333" # 移除权限 # 单个 revoke drop on *.* from ‘ceshi102‘@‘%‘ # 所有 revoke all on *.* from ‘ceshi102‘@‘%‘ # 删除用户 drop user ‘ceshi102‘@‘%‘ # 刷新权限,立刻生效 flush privileges
四、操作数据库
-- 增 -- 创建一个数据库, 如果存在s3会报错 create database db0824 charset utf8; -- 不会报错 1个warring create database if not exists s3 -- 更改编码方式utf8 create database if not exists s4 character set utf8 -- 查 -- 查看所有数据库 show databases -- 查看建立数据库的语句 show create database db0824 # CREATE DATABASE `db0824` /*!40100 DEFAULT CHARACTER SET utf8 */ -- 改 alter database db0824_1 charset gbk -- 删 drop database db0824_1;
五、操作数据表 (文件)
# 先选择数据库 # use 数据库名 # 退回到上一层 # use mysql
-- 增 -- 字段名1 类型1 ,字段名2 类型2 , ... ... create table t1(id int , name char); -- 查 -- 查看所有表 show tables; -- 查看建表语句 配合\G 可以垂直显示 show create table t1; """ Create Table: CREATE TABLE `t1_1` ( `id` int(11) DEFAULT NULL, `name` char(1) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 """ -- 查看表结构 desc t1 -- 改 -- modify 只能改变数据类型 alter table t1 modify name char(5) -- change 连字段名 + 类型一起改变 alter table t1 change name newname char(4) -- add 添加字段 alter table t1 add age int; -- drop 删除字段 column列 alter table t1 drop column age -- rename 更改表名 alter table t1 rename t1_2 -- 删 drop table t1_2;
六、操作记录 (文件中的数据)
-- 增 -- 一次插入一条数据 -- insert into 表名(字段1,字段2,...) values(值1,值2, .... ) insert into t1_1(id,name) values(1,"xboy1"); -- 一次插入多条数据 insert into t1_1(id,name) values(2,"xboy2"),(3,"xboy3"),(4,"xboy4"); -- 不指定具体字段插入(默认把所有字段对应的值插一遍) insert into t1_1 values(5,‘xboy5‘); -- 指定单个字段插入数据 insert into t1_1(name) values(‘xboy6‘); -- 查 -- * 代表所有 select * from t1_1; -- 指定字段进行查询 select id,name from t1_1; -- 改 -- update 表名 set 字段=值 where 条件 update t1_1 set name="kxq" where id = 1 -- 切记更改时,加上条件,否则全都改掉了 update t1_1 set name="kxq" -- 删 -- 指定id=2的这条数据删除 delete from t1_1 where id = 1 -- 如果不加条件,删除所有数据 delete from t1_1 -- 重置数据表 (删除数据 + 重置id) truncate table t1_1;
七、常用数据类型
7.1、整形
-- tinyint 1个字节 有符号(-128 ~ 127) 无符号(unsigned) (0 ~ 255) 小整型值 -- int 4个字节 有符号(-21亿 ~ 21亿 左右) 无符号(unsigned) (0 ~ 42亿) 大整型值 create table t1(id int , age tinyint ); insert into t1 values(2200000000,1) error insert into t1 values(2100000000,1) insert into t1 values(2100000000,128) error insert into t1 values(2100000000,127)
7.2、浮点型
float(255,30) -- 单精度 double(255,30) -- 双精度 decimal(65,30) -- 金钱类型,使用字符串的形式保存小数 -- 默认存在四舍五入 create table t2(f1 float(5,2) , f2 double(5,2) , f3 decimal(5,2)); insert into t2 values(1.77777777777777777777777777,1.77777777777777777777777777,1.77777777777777777777777777); --float 默认小数保留5位,double小数位截取16位,decimal(10,0) 默认保留整数,存在四舍五入 create table t3(f1 float,f2 double ,f3 decimal); insert into t3 values(1.77777777777777777777777777,1.77777777777777777777777777,1.77777777777777777777777777); create table t4(f1 float(5,2)); insert into t4 values(12.34567889) # 12.35 insert into t4 values(123.34567889) # 123.35 insert into t4 values(1234.34567889) error
7.3、字符串
char -- 字符长度 255个 varchar -- 字符长度 21845个 (注意:总字节数不超过65535) char(11) -- 定长 : 固定开辟11个字符长度的空间(手机号,身份证号,银行卡), 开辟空间速度上char速度更快 varchar(11) -- 变长 : 最多开辟11个字符长度的空间(评论,消息留言,地址), 开辟速度相较于char慢一点. text -- 文本类型,存论文,小说,文章.. create table t5(c char(11), v varchar(11) , t text); insert into t5 values(‘1111‘,"酸辣粉加上队列副经理开","sdfsdf234"); insert into t5 values(‘1111‘,"酸辣粉加上队列副经理2开","sdfsdf234"); error -- concat 拼接任意长度的字符串 select concat(c,":",v,":",t) from t5;
八、 mysql中常用函数
select user() select concat() select concat(参数1,参数2,参数3 , ... ) 把所有的参数拼接在一起
九、枚举 和 集合
-- enum 枚举 : 从列出来的数据当中选一个(性别) -- set 集合 : 从列出来的数据当中选多个(自动去重) 爱好
create table t6( id int, name varchar(10), money float(6,3), sex enum("男性","女性","禽兽","人妖","雌雄同体","半兽人","阿凡达"), hobby set("吃肉","抽烟","喝酒","喝假酒") ); -- 正常 insert into t6(id , name ,money , sex , hobby) values(1,"克拉伊买买提",56.7891,"半兽人","喝假酒,抽烟"); -- 自动去重 insert into t6(id , name ,money , sex , hobby) values(1,"克拉伊买买提",56.7891,"半兽人","喝假酒,抽烟,抽烟,抽烟,抽烟");