Mysql学习和使用的一些心得体会

更新时间:2023-06-19 07:22:37 阅读: 评论:0

Mysql学习和使⽤的⼀些⼼得体会
⼀些简单的概念:
1.DBMS表⽰数据库管理系统,与数据库是两个概念,类似于管理UI和服务器。数据库是由数据库管理系统创建⽽来。
2.数据库内容主要包括:datab,table,Colum,row,Primary Key等。
3.列:每⼀列要求有数据类型刚好的近义词
4.⾏:每⼀⾏代表⼀个record,不允许有重复的record
5.主键:主键必须唯⼀,不可重复使⽤(已使⽤过后删除也不能再⽤),不许为空,不允许修改或更新。
最简单的命令
查询最起码需要2个条件,从哪⾥查,查什么。
1.SELECT * FROM table
选择某⼀列或多列。
2.SELECT DISTINCT XX FROM table
去重复选择某⼀列,具有唯⼀性。DISTINCT必须位于列的前⾯。不能部分使⽤DISTINCT,如果DISTINCT后⾯接了多个列的话,所有⾏都会被检索出来。
3. SELECT * FROM table LIMIT 3
只检索前3⾏,不同的数据库拥有不同的语法,⼤概包括TOP,FETCH FIRST 5 ROWS ONLY,ROWNUM<=5等
4. SELECT * FROM table LIMIT 3 OFFSET 4
桑葚功效与作用
从第4⾏起(从0⾏开始)返回3⾏数据,简化版为SELECT * FROM table LIMIT 4,3 注意数字顺序
空调原理图5.SELECT语句的顺序(语句中关键字的前后顺序,否则会报错):
1.SELECT
2.FROM
3.WHERE
4.GROUP BY
5.HAVEING
6.ORDER BY
排序
1.排序使⽤order by⼦句,order by必须位于命令的最后,后⾯接上列,可以是SELECT的列,也可以不是SELECT的列
SELECT * FROM table ORDER BY Colum
2.可以按多个列排序,先按照第⼀个列,再按照第⼆个列(姓⽒⼀样时按照名字排序)。
3.可以按照列的位置排序,ORDER BY 2,3 意思时先按照第⼆列排,再按照第三列排
4.降序排序使⽤DESC关键字,此关键字只作⽤于直接位于其前⾯的列名,如果多列需要降序,则每⼀列都需要加关键字
过滤条件
1.过滤条件⽤WHERE字段
SELECT * FROM table WHERE xx=xx
2.WHERE操作符:
=,<>,!=,<=,!<,BETWEEN AND,IS NULL等
3.AND在语句中的优先级⽐OR更⾼
4.IN和OR可以实现相同过滤,但IN更有优势
5.尽量使⽤IN,NOT,可以优化语句象牙金
通配符
1.通配符只能搜索字符串
2. lect * from products where prod_name like ‘fish%’
3.通配符%不能匹配NULL化学与生活论文
4._只匹配⼀个字符,%匹配多个字符
5.不要过度使⽤通配符,会降低检索速度
对表中数据进⾏处理
1. lect prod_id,quantity,item_price,quantity item_price as expanded_pric from orderitems where order_num=20008
这句话的意思是列出order_num为20008中的prod_id,quantity,item_price,并计算quantity item_price赋值给
清朝科举制度expanded_pric,然后列出来
2.拼接字符串直接使⽤+,去掉空格使⽤TRIM函数,RTRIM去掉右空格,LTRIM去掉左空格。
函数
1.字符串⼤写⽤UPPER()
lect vend_name,upper(vend_name) as vend_name_upca
from vendors order by vend_name
2.⽂本处理函数:
LEFT(),LENGTH(),LOWER(),LTRIM(),RIGHT(),RTRIM(),SOUNDEX(),UPPER()等;
3.⽇期处理函数:
DATE(),DATEPART(),YEAR()等
lect order_num from orders where month(order_date)=5
4.数值处理函数
ABS() 返回绝对值社科院语言所
COS()
EXP()
PI()
SIN()
SQRT()
TAN()
聚集函数
1.AVG() 返回列平均值
COUNT() 返回列⾏数
MAX() 返回列最⼤值
MIN() 返回列最⼩值
SUM() 返回列的和
lect avg(prod_price) as prod_price_avg from products where vend_id = ‘DLL01’
lect count() as prod_num from products
count()函数会忽略列中值为空的⾏,但是如果括号中为则不忽略
lect max(prod_price) as prod_max from products
max()函数处理数据时会返回最⼤的⼀⾏,但处理⽂本时会返回最后⼀⾏
min()函数则相反
lect sum(quantity*item_price) as total_price from orderitems where order_num = 20005
返回订单的总价
数据分组
1. lect vend_id,count(*) as vend_count from products group by vend_id
Group by中,lect中的每⼀列必须在group by中也要给出。Group by必须在where之后,order by之前
Having和where的作⽤很像,只是where⽤户过滤⾏,having⽤于过滤分组。Where⽤在分组之前,having⽤在分组之后。
2.筛选数量⼤于等于3的order_num编号
lect order_num,count(*) as items from orderitems group by order_num having items>=3
⼦查询
1.⼦查询适⽤于查询多个表⾥的不同信息,使⽤WHERE XXX IN(⼦查询语句)来完成
lect cust_name,cust_contact from customers where cust_id in (
lect cust_id from orders where order_num in (
SELECT order_num from orderitems where prod_id=‘RGAN01’))
不要嵌套太多⼦查询以免影响性能
联结查询
和⼦查询有相同的效果,主要⽤到表名.列名的⽅式
lect cust_name,cust_contact
from customers,orders,orderitems
der_der_num and prod_id=‘RGAN01’ and orders.cust_id=customers.cust_id
组合查询
组合查询使⽤UNION操作符,把两个SELECT句⼦中间使⽤UNION连起来就⾏;
UNION操作符操作的两个表必须
插⼊数据
插⼊使⽤INSERT操作符,保证每⾏都有数据,没有数据的记得插⼊NULL
inrt into customers values (‘1000000006’,‘Toy Land’,‘123 Any Street’,‘New
York’,‘NY’,‘11111’,‘USA’,NULL,NULL)
更安全的做法是
Inrt into xx()values(),在前⾯的括号⾥标注列名,后⾯的括号⾥标注值,对于列名可以为空的或者有默认值的列,可以不在前⾯括号⾥⾯标注,后⾯也可以不⽤给值。
插⼊检索出的值,可以插⼊多⾏,取决于lect中取出了多少⾏
Inrt into xxx() lect xxx from xxx
复制表:
Create table xxx as lect * from xxxx
更新删除数据
更新数据使⽤UPDATE操作符,使⽤UPDATE语句⼀定要注意WHERE语句的使⽤,否则就会更新掉所有⾏。DELETE语句是删除⾏,所以不需要匹配列名。在使⽤删除或更新语句前,最好先使⽤lect语句确保操作的数据是准确的。
更新⼀列:
update customers t cust_email = ‘’ where cust_id = ‘1000000005’
更新多列:
update customers t cust_email = ‘’,cust_contact=’Sam Roberts’ where cust_id =
‘1000000006’
删除⾏:
DELETE FROM customers where cust_id = ‘1000000006’
创建和更新删除表
创建表使⽤
create table XXX(
列名 数据类型 是否为空
XXX CHAR(10) NOT NULL,
XXX CHAR(50) NOT NULL DEFAULT 1
)
更新表,不建议使⽤更新表,最好创建表时考虑到需求
ALTER TABLE XXX ADD 列名 数据类型
ALTER TABLE XXX DELETE COLNUM 列名
删除表:
DROP TABLE XXX
创建视图
视图可以理解为⼀个虚拟的表,不是实际存在数据库中的,当从不同的表中取不同的列使⽤时,可以先创建视图,然后再使⽤视图,可以简化语句并且复⽤。使⽤create view xxx as+lect语句就⾏。以后使⽤视图的时候直接lect * from xxx即可。
Create view venderlocation as lect RTRIM(vend_name)+’(’+RTRIM(vend_country)+’)’ as vend_title from venders
事务处理
事务处理的语句必须全部执⾏或全部不执⾏
start transaction;
小妇人动画片delete from orderitems where order_num =20005; delete from orders where order_num=20005; commit;

本文发布于:2023-06-19 07:22:37,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/989298.html

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

标签:数据库   语句   数据
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图