赞
踩
目录
创建表:create table 表名(列名 类型,列名 类型...);编辑
mysql是一个客户端-服务器结构的程序
mysql的服务器是真正的本体,负责保存和管理数据。数据都是存储在硬盘上的。
建立连接
客户端连接成功
大概是密码错误
检查服务器是否正常工作
1.创建数据库
create database 数据库名字 charset utf8,
2. 查看数据库
show databases
3.选中指定的数据库
use 数据库名;
4.删除数据库
drop database 数据库名;
sql中数据库名、表名、列名都不能和关键字重复
sql都需要以;结尾
mysql客户端允许输入sql时换行.
避免创建数据库重复(在工作中常常把一系列sql写到一个文件中批量执行,如果一条sql报错了,后面都无法执行)
已经存在,创建失败
不存在,创建成功
创建时指定字符集
(注意:mysql的utf8是一个”残本“ 少了一些emoji表情 而utf8mb4则是完全体)
(注意:删除的不仅仅时database 而且也删除了database中所有的表 和表里所有的数据!!)
(前提是先选中数据库)
行也称为记录 列也称为字段
DECIMAL(M,D)精度更高的浮点数(精度高但运行速度慢,占用空间也更多)
(mysql有无符号的数据类型 但是不建议使用 会在未来的的版本中废除)
(注意:一般很少会在数据库的某一列中,存储特别大的数据.(几十M, 几百M)这么做会大大影响到数据库的增删改查的效率
实际开发中如果需要保存图片,一般都是把图片单独放到专门的目录中,然后让数据库保存图片的路径)
上述类型 掌握几个重要的即可:
int
long
double
decimal
varchar
datetime
(如果想让表名/列名和关键字一样 可以使用反引号`(英文状态下打波浪线)把表名/列名引起来)
(数据库中的内容 都是持久化存储的 重启电脑啥的 数据仍然存在)
(注意:sec=second 秒 并且0.00sec表示时间<10ms 0.02sec=20ms在计算机中是一个挺慢的时间了!mysql这样的数据库 性能其实是短板~)
(删除表的同时 也会把表里的数据一起删除掉)
①insert into 表名 values(值,值...);
(注意 要与列的个数和类型匹配)
②一次插入多行记录
insert into 表名 values (值,值...),(值,值...)...;
(一次插入多行 比一次插入一行,分多次插入要快不少~)
③指定列插入
insert into 表名(列名,列名...) values (值,值...);
(其他列会被自动填充为默认值)
datetime插入 使用固定格式字符串
sql提供了一个现成的函数 now()
mysql是一个客户端-服务器结构的程序
客户端进行的操作 会通过请求发送给服务器 服务器的查询结果也会通过响应返回给客户端
①全列查询
select * from 表名
把表中所有行和列查询出来
实际开发中谨慎使用 如果数据太多 可能导致瘫痪
1.读取硬盘.把硬盘的IO给跑满了.此时程序的其他部分想访问硬盘,就会非常慢
2.操作网络. 也可能把网卡的带宽也跑满,此时其他客户端想通过网络访问服务器,也会非常慢,
②指定列查询
select 列名,列名...from 表名;
一个表的列数非常多,但某个场景的操作,只需要关注其中几个列
③查询字段为表达式
一边查询一边计算~
不会修改服务器上的原始数据,只是响应在临时结果中做了计算
④带别名查询
查询的时候给列/表达式指定别名(给表也能指定别名)
select表达式 as 别名 from 表名;
(as可以省略 但是不建议 可读性差)
⑤去重查询
distinct修饰某个列/多个列,值相同的行只会保留一个
⑥查询时排序
select 列名 from 表名 order by列名 asc/desc;
(asc升序 desc降序 如果省略,就是升序)
(排序也是针对临时数据,不影响在服务器上存储的数据~)
(注意:如果一个sql不加order by查询结果的顺序是无序、不确定的,我们进行一些简单操作时看起来顺序没变,但如果进行一些更复杂的操作时,就不一定了)
order by 指定的列, 如果你 select 的时候没有把这一列査出来, 也不影响 排序~~
order by 还可以针对表达式进行排序~~
指定多个列来排序. order by 后面可以写多个列.使用,来分割开~~
⑦条件查询:where
select 列名 from 表名 where 条件;
会指定具体的条件,按照条件针对数据进行筛选
between..and.. 为闭区间
in来表示一个离散的集合
(优先级不建议背 用()即可)
⑧分页查询limit
限制最多查询出来多少个结果 默认从下标0开始
offset偏移量,表示从哪个下标开始
update 表名 set 列名=值,列名=值 where 条件;
(注意:math+=30 × ,math=math+30 √)
(可能会导致一些错误 如结果为43.75 而创建表时定义decimal(3,1)超出范围 则进行截断43.8。
产生warning时 用show warnings语句查看警告
)
delete from 表名 where 条件 / order by / limit
如果不指定任何条件,就是删除整个表
(drop table是删除了表和表里的数据
delete只是删除了表里的数据 表还在(空表))
补充
sql可以通过-- 表示注释(--后至少有一个空格)
另外也支持#开头作为注释
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。