博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql 基础语句
阅读量:5152 次
发布时间:2019-06-13

本文共 10109 字,大约阅读时间需要 33 分钟。

*******************mysql 初级语句    mysql> select user();  #查看当前用户    mysql> exit     # 也可以用\q quit退出    mysql> set password = password('root'); # 给当前数据库设置密码    mysql> create user 'eva'@'192.168.10.%'   IDENTIFIED BY '123';# 指示网段    mysql> create user 'eva'@'192.168.10.5'   # 指示某机器可以连接    mysql> create user 'eva'@'%'                    #指示所有机器都可以连接      mysql> show grants for 'eva'@'192.168.10.5';查看某个用户的权限   mysql>  select user,password from mysql.user; 查看所有的用户和密码    mysql> delete * from mysql.user where password = ''; 删除用户密码为空的    mysql> grant all on *.* to 'eva'@'%';     # 创建账号并授权    mysql> grant all on *.* to 'eva'@'%' identified by '123'    mysql>flush privileges  # 执行起效   注意: 当你创建成功后,  西哟啊登录被创建的用户  需要把  skip-grant-tables  添加到本地存储mysql中的my.ini 文件中
mysql> create database staff;创建库    mysql> use staff;到当前库下    创建表    mysql> create table staff_info (id int,name varchar(50),age int(3),sex enum('male','female'),phone bigint(11),job varchar(11));     查看表结构     show tables; 当前所有表     desc 表名字;   查看表的基础信息     describe 表名字;   查看表的基础信息     show create table 表名 \G;  查看表的详细信息(编码 和 存储引擎)    celect * from 表名: 创建表    # create table 表名 (字段名 数据类型 约束条件) 查看表结构    # desc 表名;    # show create table 表名 \G;                1. 操作文件夹(库)       增:create database db1 charset utf8;       查:show databases;       改:alter database db1 charset latin1;       删除: drop database db1;    2. 操作文件(表)       先切换到文件夹下:use db1       增:create table t1(id int,name char);       查:show tables;       改:alter table t1 modify name char(3);   只改变字段的属性          alter table t1 change 旧字段名 新字段名 旧数据类型 [完整性约束条件…];  change比modify还多了个改名字的功能.把旧的字段与属性一起改变
删:drop table t1;            3. 操作文件中的内容(记录)       增:insert into t1 values(1,'egon1'),(2,'egon2'),(3,'egon3');       查:select * from t1;       改:update t1 set name='sb' where id=2;       删:delete from t1 where id=1;       清空表:           delete from t1; #如果有自增id,新增的数据,仍然是以删除前的最后一样作为起始。           truncate table t1;数据量大,删除速度比上一条快,且直接从零开始,    *auto_increment 表示:自增    *primary key 表示:约束(不能重复且不能为空);加速查找        ********** 存储引擎********************************    一                # Innodb 支持事务,行级锁,外键  并发的事务 频繁的修改数据        # myisam 只支持表锁 对事务完整性要求不高 大量的查 插入 少量的修改和删除        # memory        # blackhole 主从多级复制的时候        二        # Innodb : 支持事务(什么是事务)\行级锁(特点)\外键(定义)        # myisam : 表级锁(特点)        # memory : 内存 快\不能完成数据的持久化存储,mysql server端重启失效 (缓存的作用)        # blackhole : 黑洞 所有的数据都可以写入 但是都不会真的记录在表当中                    # (多级主从复制中的一台机器上的数据库常用的存储引擎)        # 事务 : n句sql是一个完整的事件,这n句sql要么一起成功,要么一起失败        # 两个典型的例子            # 招商银行的卡                # 王伟哲的钱 -200                # 我的钱 +200                # 刘亚军的钱 -200                # 我的钱 +200        # 锁            # 在一个人进行修改数据的时候,如果有人来读取数据了            # 在一个人进行修改数据的时候,如果有人来修改数据了        # 行级锁 :能够支持更多的修改数据的并发操作 当要修改的行数非常多的时候 效率也会受到影响        # 表级锁 :不能支持并发的修改同一张表中的数据 不需要加很多细粒度的锁来浪费时间        # 外键        # 在本表中有一个字段 关联 外表中的另一个字段        # memory 内存级别的存储引擎  : 缓存的作用 cache            # 断电消失的数据            # 存储一些对效率要求比较快的 但是丢失又不要紧的数据        # 把所有的视频都已 Innodb存储引擎的存储方式存在一张表里            # 存在硬盘上        # 把经常被点击的热数据 放到memory存储引擎中再存一次            # 存在内存中                *********************数据类型        # 数值 :整数(int)和小数float(n,m)            # n 表示一共有多少位,m表示小数点后面有多少位        # 字符串            # char 浪费空间  存取速度快                # 数据的长度相对固定 :手机号码  身份证号 ip地址 姓名 用户名            # varchar 节省空间 存取速度慢                # 数据的长度不固定 甚至值比较分散(len=1,256,3000)        # 时间            # year 年            # date 年月日            # time 时分秒            # datetime    年月日时分秒                # timestamp 默认插入now()混合日期和时间值,时间戳        # 字符串格式        # char  定长,存储相对浪费空间,存取速度快,不管你存储什么样的数据,他都会帮你把数据的空格在显示的时候去掉        # varchar 变长,相对节省空间,存取效率相对慢        # char(5) varchar(5)        # 'a    ','1a' 5个位置,2个位置    # 1个字符指的是 8bit  1个字节最多255        # 'aaaaa','5aaaaa' 5个位置,6个位置    # 1个字符指的是 8bit  1个字节最多255        # char            # 手机号码 11位            # 身份证号 18/15            # 有限的   name(12)        # varchar            # 评论 不得低于10个字,不得超过255个字            # 备注        # concat(ch,'+')        # enum和set            # enum 枚举  单选+不能选不在枚举范围里的            # set 集合   多选+去重+不能选不在集合里的        # create table t9 (name char(20),gender enum('female','male'))        # 多选框--程序中 勾选        # create table t10 (name char(20),hobby set('抽烟','喝酒','烫头','翻车'))*************************************约束        # not null  非空        # default 默认值        # unique    唯一            # unique(字段1,字段2) 表示这两个字段联合唯一        # auto_increment 自增(int,unique) 只有唯一的在可以中增一般都是数字型 的         # primary key 主键(一张表只能有一个或一组) 非空+唯一        # foreign key 外键 关联的那个字段必须是唯一的            # on update cascade  (级连更新)            # on delete cascade  (级联删除)    # 表与表之间的关系        # 一对多 : foreign key        # 多对多 : 两张表变三张表 第三张表中存两个foreign key        # 一对一 : 外键字段unique*******************************表的增删改操作;    # 表结构    # id name age sex    # create table t1 (id int primary key auto_increment,name char(12) not null,age int,sex enum('male','female'));    # 增加数据    #     insert into 表名 value (1,'alex',83,'不详');  一次插入一条数据    #     insert into 表名 values (1,'alex',83,'不详'),(2,'wusir',74,'male'); 支持一次写入多条数据    #   insert into 表名 (name,age,sex) values ('alex',83,'不详');    # 修改数据    # update 表名 set 字段名=值 where 条件    # update 表名 set 字段名1=值1,字段名2=值2 where 条件    # 删除数据    # delete from 表 where 条件;    # delete from 表;  清空表        # auto_increment*****************************键表查:*************************简单查询mysql 语句的顺序    from,            # 先找到表 from    where,           # where约束条件,在文件中找记录,不能与聚合函数一起用    group by,        # 将记录进行分组group by,如果没有,就整体为一组,可以与group conncat搭一起使用    select,          # 执行select    distinct,        # 如果没有group by,就用distinct进行去重,在select之后    having,          # 进行having过滤, 只有group by使用时 才用    order by,        # 按条件排序 order by     limit,           # 限制结果显示的条数复制代码company.employee    员工id      id                  int                 姓名        emp_name            varchar    性别        sex                 enum    年龄        age                 int    入职日期     hire_date           date    岗位        post                varchar    职位描述     post_comment        varchar    薪水        salary              double    办公室       office              int    部门编号     depart_id           int#创建表create table employee(id int not null unique auto_increment, #------->把id设置为不为空,唯一,且是增的emp_name varchar(20) not null,sex enum('male','female') not null default 'male', #大部分是男的 不为空默认是femaleage int(3) unsigned not null default 28,#--------------->非符号 不为空 默认 28 hire_date date not null,#------------->年月日时分秒post varchar(50),#----------->字符串50post_comment varchar(100),salary double(15,2),#---------------->浮点数office int, #一个部门一个屋子depart_id int);### insert into employee(emp_name,sex,age,hire_date,post,salary,office,depart_id) values# ('egon','male',18,'20170301','老男孩驻沙河办事处外交大使',7300.33,401,1), #以下是教学部# ('alex','male',78,'20150302','teacher',1000000.31,401,1),# ('wupeiqi','male',81,'20130305','teacher',8300,401,1),# ('yuanhao','male',73,'20140701','teacher',3500,401,1),# ('liwenzhou','male',28,'20121101','teacher',2100,401,1),# ('jingliyang','female',18,'20110211','teacher',9000,401,1),# ('jinxin','male',18,'19000301','teacher',30000,401,1),# ('成龙','male',48,'20101111','teacher',10000,401,1),## ('歪歪','female',48,'20150311','sale',3000.13,402,2),#以下是销售部门# ('丫丫','female',38,'20101101','sale',2000.35,402,2),# ('丁丁','female',18,'20110312','sale',1000.37,402,2),# ('星星','female',18,'20160513','sale',3000.29,402,2),# ('格格','female',28,'20170127','sale',4000.33,402,2),## ('张野','male',28,'20160311','operation',10000.13,403,3), #以下是运营部门# ('程咬金','male',18,'19970312','operation',20000,403,3),# ('程咬银','female',18,'20130311','operation',19000,403,3),# ('程咬铜','male',18,'20150411','operation',18000,403,3),# ('程咬铁','female',18,'20140512','operation',17000,403,3)# ;# select    # select * from 表名; * 表示所有的内容    # select 字段1,字段2 from 表;  表示查指定的列的内容    # select distinct 字段名 from 表; distinct关键字表示去重    # 在select字段可以使用四则(加减乘除)运算        # select 字段*12 from 表    # 可以给字段进行重命名        # select 字段 as 新字段名 from 表    # 两个格式化函数 concat()  concat_ws()        # concat('自己想拼的内容',字段,'你想拼的内容');        # concat_ws(':',字段1,字段2)    # 条件判断        # case        # when 条件1 then 字段的操作        # when 条件2 then 字段的操作        # else 字段的操作        # end# 查出所有员工的名字,薪资,格式为#     
<名字:egon>
<薪资:3000>
# select emp_name,salary from employee;# select concat('
<名字:',emp_name,'>
'),concat('
<薪资:',salary,'>
') from employee;# select concat('
<名字:',emp_name,'>
<薪资:',salary,'>
') from employee;*******************where条件 # 对表当中的数据进行一个条件的筛选 # 对一个值的判断 # = > < != <> >= <= # 对一个范围的判断 # between 小的值 and 大的值 [小的值,大的值] # in (值1,值2,值3,值4) # 模糊匹配 like '%a_' # 'a'的名字 # '%a'以a结尾,'a%'表示以a开头,'%a%'表示匹配中间带个a的字符串 # '%'通配符 匹配任意长度的任意内容 # '_a' 表示任意的一个字符a,'a__'以a开头后面是任意的两个字符 # '_' 匹配一个长度的任意内容 # 多个条件的拼接 # 逻辑运算符 # and 两个条件必须都成立 才算成立 # or 只要有一个条件成立就成立 # not 非# 查看岗位是teacher且薪资是10000或9000或30000的员工姓名、年龄、薪资# select emp_name,age,salary from employee where salary in (30000,10000,9000) and post = 'teacher';# group by # select 数据 from 表 where 条件 group by 分组 # select post from employee where depart_id > 1; # select emp_name from employee where depart_id > 1 group by post; # 结果 是 有多少个部门 就有多少条数据# 聚合函数 # count(字段) 统计有多少条记录是符合条件的 只统计字段不为空的那一行数据 # count(*) 统计有多少条记录是符合条件的 # count(1) 统计有多少条记录是符合条件的 # min # max # avg # sum# 分组 + 聚合函数 # 求 各部门 的 平均工资 # select avg(salary) from employee group by post;# having 过滤 关键字 # 都是根据分组的结果进行过滤的 # 推荐你 如果用了 分组 那么分组之后的条件 having来完成 # 求部门的平均薪资 在10000以上的部门名称? # select post from employee group by post having avg(salary)>10000; # where 再 group by 再 having # 统一对一个组的数据进行进一步的筛选的时候,都是用having关键字 # 以后对于条件的使用,我们应该尽量使用where进行单条数据的筛选 # 只有在对分组之后的数据进行筛选的时候,才用having# 聚合函数 算出来的结果 只是 代表一列的结果 我们并不能直接将这一列相关的一行数据直接取到# select 性别,avg(age) from 表 group by 性别# select 部门,avg(age) from 表 group by 部门# order by 排序 # 先根据我们的条件找到所有符合条件的行 # 根据这些行中的某一个字段对这些信息进行排序 # 默认是升序 从小到大排 acs # 降序 从大到小排 desc # select name,age from employee where post = 'teacher' order by age # 求入职时间最短的人 # select emp_name,hire_date from employee order by hire_date desc;# limit # limit n 取n个 # limit m,n 从m +1 开始 取n条 # limit n offset m参考 女神博客

 

转载于:https://www.cnblogs.com/LMTlmt/p/10492234.html

你可能感兴趣的文章
scrapy写爬虫是出现no module named win32api错误
查看>>
用js来实现那些数据结构09(集合01-集合的实现)
查看>>
Sqlserver 2008 R2安装的盘符空间不够用的解决办法
查看>>
1038 Recover the Smallest Number (30 分)
查看>>
网站系统开发需要掌握的技术
查看>>
Android提供两个常用的消息弹出框【Toast和Alert】
查看>>
将.csv文件用Excel 2016打开
查看>>
[Offer收割]编程练习赛37
查看>>
对齐方式
查看>>
Mybatis plus中一个框多条件查询 SQL拼接
查看>>
WPF Uri
查看>>
你不知道的JavaScript之类型
查看>>
工作流,sharepoint 开发流程
查看>>
[转]Android推送方案分析(MQTT/XMPP/GCM)
查看>>
使用方向变换(directional transform)图像分块压缩感知
查看>>
朴素贝叶斯法
查看>>
YCbCr-YUV
查看>>
vs2010+qt4编译出现error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject等错误...
查看>>
(转载)MySQL中UNION和UNION ALL的使用
查看>>
使用afinal下载文件并且在状态栏中显示下载的进度
查看>>