MySQL使用手册

    xiaoxiao2021-03-25  128

    MySQL语法总结

    MySQL结构:

    数据库中存放数据都是依托与一张张的数据表存在的,我们通过数据库可以高效的利用数据;而我们对数据的操作就是对数据库中的表的操作。

    SQL数据类型:

    字符型:<varchar> VS <char> 文本型:<text> 数值型:<int> VS <smallint> VS <tinyint> 浮点型:<float> VS <decinal> 逻辑型:<bit> 日期型:<datetime> VS <smalldatetime>

    MySQL基本操作(格式):

    登陆

    mysql -u root -p 默认没有密码,直接回车,也可以自行修改密码。 操作数据库中的表单时,一定要先USE <数据库名>来进入该数据库

    创建

    创建数据库:CREATE databases <数据库名>;创建表单:CREATE table <表名>;

    查询

    单表查询:

    SELECT <字段名一,字段名二,...> FROM <表名> WHERE <查询条件>; 查询所有数据库:SHOW DATABASE;选中某个数据库进行操作:USE <数据库名>查询某数据库中所有的表:SHOW TABLES;查询表中某字段的数据:SELECT <字段名一,字段名二....> FROM <表名>;查询某记录:SELECT <字段一,字段二...> FROM <表名> WHERE <查询条件>; (多个)查询条件:<字段名> =值 && <字段名> =值查询表中的所有记录:SELECT * FROM <表名>;查询表结构字段名(不包含外键):DESC <表名>;查询表创建时(修改后)的SQL语句:SHOW CREATE TABLE <表名>;可以用来查看外键信息

    连接查询:可以使用表的别名(eg:table1 A) - 内连接-等值连接:指使用等号”=”比较两个表的连接列的值,相当于两表执行笛卡尔后,取两表连结列值相等的记录-SELECT <表名A.字段名(*)>,<表名B.字段名(*)> FROM <表名A> INNER JOIN <表名B> ON <表名A.字段名> = <表名B.字段名>; - 内连接-非等值连接:SELECT <表名A.字段名(*)>,<表名B.字段名(*)> FROM <表名A> INNER JOIN <表名B> ON <表名A.字段名> >(或者<) <表名B.字段名>; - 外连接-左外连接:指将左表的所有记录与右表符合条件的记录匹配,返回的结果除内连接的结果,同时如果有左表不符合条件的记录,就在右表相应列中填NULL-SELECT <表名A.字段名(*)>,<表名B.字段名(*)> FROM <表名A> LEFT JOIN <表名B> ON <表名A.字段名> = <表名B.字段名> - 外连接-右外连接:SELECT <表名A.字段名(*)>,<表名B.字段名(*)> FROM <表名A> RIGHT JOIN <表名B> ON <表名A.字段名> = <表名B.字段名> - 自然连接:MySQL中的自然连接是自动将两个表中相同名称的列进行记录匹配SELECT <表名A.字段名>,<表名B.字段名> FROM <表名A> NATURAL JOIN <表名B>; - 自连接:用别的表实现自身表的连接-SELECT <表名B.字段名(*)> FROM <表名A.字段名(*)>,<表名B.字段名(*)> WHERE <表名A.字段名> = <表名B.字段名> AND <查询条件>;

    嵌套查询:将一个查询块嵌套在另一个查询块的WHERE子句或者HAVING短语的条件中的查询 - 含IN的子查询:可以多层嵌套-SELECT <字段一,字段二...> FROM <表名> WHERE <字段名> IN (SELECT <字段一,字段二...> FROM <表名> WHERE <查询条件>); - 含ANY的子查询:查询的条件符合另一个查询结果的任一个即可-SELECT <字段一,字段二...> FROM <表名> WHERE <字段名> <ANY(或者是>ANY、=ANY) (SELECT <字段一,字段二...> FROM <表名> WHERE <查询条件>) - 含EXISTS的子查询:EXISTS代表存在量词∃。带有EXISTS谓词的子查询不返回任何数据,只产生逻辑值true或者false-SELECT <字段一,字段二...> FROM <表名> WHERE <字段名> EXISTS (SELECT <字段一,字段二...> FROM <表名> WHERE <查询条件>)

    集合查询:SELECT语句的查询结果是元组的集合,所以多个SELECT语句的结果可进行集合操作。集合操作主要包括并操作UNION、交操作INTERSECT、差操作EXCEPT,在MySQL替换过来就是OR、AND、EXISTS/IN - 集合并查询:实质上是进行两次查询操作然后将结果取并集-SELECT <字段一,字段二...> FROM <表名> WHERE <查询条件> UNION SELECT <字段一,字段二...> FROM <表名> WHERE <查询条件>,可以使用语句取代-SELECT <字段一,字段二...> FROM <表名> WHERE <查询条件> OR <查询条件> - 集合交查询:MySQL不支持直接的交集查询,使用替代语句-SELECT <字段一,字段二...> FROM <表名> WHERE <查询条件> AND <查询条件> - 集合差查询:MySQL不支持直接的差集查询-SELECT <字段一,字段二...> FROM <表名> WHERE <查询条件> AND <查询条件>,具体使用时逻辑符号会变。或者使用IN或者EXISTS

    排序

    按照某字段升序排列:SELECT * FROM <表名> ORDER BY <字段名> LIMIT <待排列的记录数>;降序排列:SELECT * FROM <表名> ORDER BY <字段名> DESC LIMIT <待排列的记录数>;

    插入

    插入记录:INSERT INTO <表名> VALUES('...','','',....);插入某一字段:ALTER TABLE <表名> ADD <字段名> <字段类型> ;

    删除

    删除数据库:DROP DATABASE <数据库名>;删除未被外键关联的表:DROP TABLE IF EXISTS <表名>;删除已经外键关联的表:先删除子表再删除父表删除表中的某一条记录:DELETE FROM <表名> WHERE <字段=值>;删除表中的某一字段:ALTER TABLE <表名> DROP <字段名>;删除外键约束:ALTER TABLE <表名> DROP FOREIGN KEY <外键名>

    修改

    修改表名:ALTER TABLE <旧表名> RENAME TO <新表名>;修改表中的字段名:ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <数据类型>;修改表中字段的数据类型:ALTER TABLE <表名> MODIFY <字段名> <新数据类型>;修改表中字段的顺序:ALTER TABLE <表名> MODIFY <字段名> <数据类型> FIRST/AFTER <字段名>;修改表中某一记录某一字段的值:UPDATE <表名> SET <字段名>=<新值> WHERE <查询条件>;在表都创建之后添加外键:ALTER TABLE <需要添加外键的表名> ADD CONSTRAINT <外键名> FOREIGN KEY(<需添加外键的表的字段名>) REFERENCES <被作为外键的表名> (<被作为外键的字段名>);

    索引

    index索引可以有重复的值,而unique和primary key索引列中的值时唯一的 - ALTER创建索引(可同时添加多个表的索引列) - ALTER TABLE <表名> ADD INDEX <索引名(可省缺)>(索引字段名); - ALTER TABLE <表名> ADD UNIQUE(<索引字段名>); - ALTER TABLE <表名> ADD PRIMARY KEY(<索引字段名>); - CREATE增加索引 - CREATE INDEX <索引名> ON <表名> (<索引字段名>); - CREATE INDEX <索引名> ON <表名> (<索引字段名>); - 查询索引:SHOW INDEX FROM <表名>;或者SHOW KEYS FROM <表名>; - 删除索引:DROP INDEX <索引名> ON <表名>;或者ALTER TABLE <表名> DROP INDEX <索引名>或者ALTER TABLE <表名> DROP PRIMARY KEY;

    设置约束关系

    主键,又称主码,主键约束就是作为主键的字段在记录中是唯一存在的,不可重复,并且也不许为空。就像我们每个人都有自己唯一的身份ID一样,唯一标识。利用这个特性,我们可以在数据库中快速的查询定位到一条记录。 - 设置主键:创建表的时候,在定义字段以及数据类型的后面直接加上PRIMARY KEY (默认值);或者在定义完所有的字段以及数据类型后,加上PRIMARY KEY (<字段名一,....>)

    外键,表中的一个或多个字段,可以不是本表的主键,但必须是另一个表的主键。外键用来在两个表中建立连接关系,对于有关联关系的两个表而言,相关联字段中主键所在的表为父表,外键所在的表为子表。 - 设置外键:在表中所有字段都定义后(包括外键名),加上CONSTRAINT <外键约束名> FOREIGN KEY(外键名) REFERENCES <关联的外表名(外表的字段名)>;

    注意的是,这里的外键约束名与外键名是不同的意思 同一个数据库中,外键约束名和外键名一定不可以重复!!! /(ㄒoㄒ)/~~

    视图

    视图包含行和列,其中的字段来自一个或多个数据库中的真实的表中的字段,一起组合成一个类似真实的表。可以像基本表一样,进行增删改查的操作。记录进行改动后,视图与基本表都会更新 - 创建视图:

    CREATE VIEW <视图名>(视图字段名一,字段名二,...(可选)) AS <子查询语句> SELECT <字段名一,字段名二,...> FROM <表名> WHERE <查询条件>; 删除视图:DROP VIEW <视图名>;查询视图:SELECT * FROM <视图名>;或者SLECT <字段名> FROM <视图名>;修改视图:可以向上述修改字段/记录的方式一样来修改视图,并且修改结果各个实际的表也会生效,也可以按下面的方法修改↓↓↓↓↓ CREATE OR REPLACE VIEW <视图名>(视图字段名一,字段名二,...(可选)) AS <子查询语句> SELECT <字段名一,字段名二,...> FROM <表名> WHERE <查询条件>;

    某些情况下可以缺省视图的字段名,MySQL会自动补全。但是当SELECT后面的字段有来自函数查询的结果时,不可以缺省。

    添加注释/备注

    给表添加描述:ALTER TABLE <表名> COMMENT='这里是表的注释'给列添加描述:ALTER TABLE <表名> MODIFY '<字段名>' DATETIME DEFAULT NULL COMMENT '字段描述'

    心得

    谈一谈外键约束关系: 在两个相关联的表中,一个表的主键是另一个表的非主键字段,这个字段中的值可能有很多。就拿学生选课来说,某一个课程可能有很多学生选,学生的主键是学号,那么该课程的表中,学号这一外键就会有很多值,同时,也把课程的数据表和学生的数据表关联了起来。 呐,在这个例子中,课程的表就是子表,学生的数据表就是父表。倘若,父表的值改变了,那么一定需要修改子表的值,而子表想去修改外键的值是没有权限的;但是,子表可以删除带有外键值的记录。这之中就有一种很明显的约束关系。

    转载请注明原文地址: https://ju.6miu.com/read-24219.html

    最新回复(0)