zoukankan      html  css  js  c++  java
  • SQL的用法

    SQL语句

    1.SELECT,选择列,AS 别名(适用于字段,表)

    SELECT * FROM Teacher  #选择Teacher表所有的列
    SELECT name,age FROM Teacher  #只选择出了整个表的Name,age列,查询指定字段
    SELECT name AS 学号,age AS 年龄 FROM Teacher # 起一个别名方便查看结果
    
    ##特殊用法
    SELECT VERSION()
    SELECT 100*3-1 AS 计算结果 #用于计算
    SELECT `studentGrade` + 1 AS '分数加1' FROM `result` #所有分数加1
    
    

    1.有时候搜索的结果不是那么见名知意,所以用别名

    2.DISTINCT,去重

    SELECT DISTINCT name FROM Teacher;#查询Teacher表中所有的不重复的姓名,
    

    3.WHERE子句,判断条件,模糊查询(本质还是运算符)

    SELECT  age FROM Teacher WHERE age <30;#找到所有年龄少于三十岁的老师
    SELECT  age FROM Teacher WHERE age BETWEEN 20 AND 30 ;#找到所有年龄少于三十岁大于20的老师
    SELECT  name FROM Teacher WHERE name = 'lihuanhuan';#找到所有年龄少于三十岁的老师
    #模糊查询
    IS NULL  /  IS NOT NULL / BETWEEN   /  LIKE / IN
    LIKE #SQL匹配,如果a匹配b,则结果为真
    IN # a in (a1,a2,a3....) 如果a在里面则为真
    

    注意数字和字母的区别。

    模糊查询 LIKE,IN

    #名字为两个字符,姓刘的人
    SELECT `name`,`age` FROM `student` WHERE `name` LIKE '刘_'
    #姓刘的人
    SELECT `name`,`age` FROM `student` WHERE `name` LIKE '刘%'
    #中间包含刘,名字数量不限制的
    SELECT `name`,`age` FROM `student` WHERE `name` LIKE '%欢%'
    
    #在一组里面找符合in里面的,找地址在合肥,六安的人。
    SELECT `name` FROM `student` WHERE `Address` IN ('合肥','六安')
    

    4.AND 和 OR,与和或。

    #找年龄小于30或者名字为Tom
    SELECT  name,age FROM Teacher WHERE age <30 OR name = 'Tom';
    #找到所有年龄少于30岁并且大于20的老师
    SELECT  age FROM Teacher WHERE age BETWEEN 20 AND 30 ;
    #这是多个条件的组合条件
    SELECT * FROM Teacher WHERE (FirstName='Tom' OR FirstName='Jerry')
    AND LastName='Carter'
    

    5.ORDER BY,排序,DESC 逆序,ASC顺序

    #查找姓名并且按照首字母排序
    SELECT  name FROM Teacher ORDER BY name;
    #查找年龄并且按照大小排序
    SELECT  age FROM Teacher ORDER BY age;
    #查找姓名并且按照首字母逆序排序,年龄顺序排序
    #同时各顺序,以第一个为排序原则,第二列存在相同选项时才顺序排列
    SELECT  name,age FROM Teacher ORDER BY name DESC,age ASC;
    

    6.INSERT INTO 插入

    #按照顺序插入表中元素
    INSERT INTO Teacher VALUES ('Gates',24)
    INSERT INTO Teacher VALUES ('Gates',24),('Tom',13)
    ##字段可以显示写出来,也可以省略,但是必须要一一对应
    INSERT INTO Teacher (`name`,`age`) VALUES ('Gates',24)
    #也可以只插入想要的值,前提是允许非空
    INSERT INTO Teacher  (`name`) VALUES ('Gates')
    

    1.字段和字段之间用都好隔开

    2.字段是可以省略的,但是后面的值必须一一对应。

    3.可以同时插入多条数据,只要values 后面的值用逗号隔开

    7. SHOW 显示建库,建表语句

    show create table student
    show create database school 
    DESC student #显示表结构
    

    image-20200425092725398

    8.ALTER,MODIFY,CHANGE ,DROP,ADD修改和删除

    #重命名的方式
    ALTER TABLE building RENAME AS buildings
    #修改表的字段
    ALTER TABLE teacher ADD address varchar(30) 
    #建议用可视化工具来做
    #修改约束,无法重命名,它可以修改所有的字段类型和约束,change不能
    ALTER TABLE teacher MODIFY age VARCHAR(10)
    #字段重命名,#modify不用来重命名,只能修改字段类型和约束
    ALTER TABLE teacher CHANGE age age1 INT(10)
    #删除属性
    ALTER TABLE teacher DROP age1
    #添加字段
    ALTER TABLE teacher ADD age INT(1)
    

    9.删除表

    #删除表
    DROP TABLE IF EXISTS teacher
    

    注意点:

    • `` 字段名使用这个符号包裹
    • 注释 -- 或者 /**/
    • sql 关键字大小写不敏感,建议大家写小写
    • 不要用中文

    10.外键(了解即可)

    CONSTRAINT FK_gradeid  FOREIGN KEY(gradeid)  REFERENCES `grade`(`gradeid`)
    

    一般不在数据库中设置外键,这里是物理外键,不建议使用,现在都使用逻辑外键了

    10.UPDATE 修改

    #修改学生姓名
    UPDATE `student` SET `name`='狂神' WHERE id = 1
    #不指定条件的情况下,会改动所有的表!千万不能这么干,一定要带条件
    UPDATE `student` SET `name`='臭狗屎'
    #语法
    UPDATE 表名 SET 字段(列) WHERE 条件
    

    修改多个属性,逗号隔开

    UPDATE `student` SET `name`='狂神',`email` = '12312@qq.com' WHERE id = 1
    #语法
    UPDATE 表名 SET 字段(列),字段二,。。。 WHERE 条件
    

    11.BETWEEN......AND..... 在两者之间

    相当于闭区间 BETWEEN 2 AND 5 [2,5]

    12.DELETE,TRUNCATE

    #这样会全部删掉
    DELETE FROM `student`
    #删除指定元素
    DELETE FROM `student` WHERE id = 1
    
    #TRUNCATE会删除一个数据库和所有文件
    #删除这个表
    TRUNCATE `student`
    

    相同点:都能删除,都不会删除表结构

    不同点:TRUNCATE 重新设置 自增列,计数器会归零(清空表和数据库用TRUNCATE)

    TRUNCATE不会影响事物

    DELETE存储在内存上的,断电之后,自增变量又会回到1,MYISAM则会持久化。

    连表查询

    函数

    1.CONCAT 拼接字符串

    SELECT CONCAT('姓名:',NAME) AS 姓名 FROM student
    

    image-20200425215258196

    INNODB和MYISAM

    常规使用操作:

    1. Innodb安全性高,十五的处理,多表多用户操作
    2. myisam 存储占用空间少,速度较快
    3. 表锁,行锁。一个在表级别的时候锁住,一个在语句级别上锁
    4. INNODB现在也支持全文索引了。

    image-20200425091413765

    所有数据库文件都存在 data 文件中

    mysql引擎在物理文件上的区别:

    1. InnoDB在数据库表中只有一个*.frm文件,以及上级目录下的ibdata1文件
    2. MYISAM对应文件
    • ​ *.frm 表结构定义的文件
    • ​ *.MYD 数据文件
    • ​ *.MYI 索引文件

    设置数据库表的字符集编码

    charset=utf8
    

    mysql默认编码Latin1,创建时就应该设置默认编码,在my.ini中配置默认的编码,但是还是要在创建表的时候加上,不然在别人电脑不能执行,会乱码。

  • 相关阅读:
    nginx 安装教程
    php 安装教程
    第一个AWK程序的尝试
    memcached-tool 工具
    java数据库 DBHelper
    Innodb的三大关健特性
    我遇到的一个ClassNotFoundException问题
    storm学习初步
    再探 jQuery
    简单聊一聊正则表达式中的贪婪匹配和非贪婪匹配
  • 原文地址:https://www.cnblogs.com/li33/p/12775846.html
Copyright © 2011-2022 走看看