数据库相关的表操作,准备做大项目。
 
创建数据表 CREATE  TABLE  users (    id INT  AUTO_INCREMENT PRIMARY  KEY,     username VARCHAR (50 ),     gender VARCHAR (10 ),     birthdate DATE ,     age INT ,     school VARCHAR (50 ),     phone VARCHAR (20 ),     education VARCHAR (20 ) ); d:自增长的主键列 username:用户名 gender:性别 birthdate:出生日期 age:年龄 school:学校 phone:电话号码 education:学历 或者 用户名,电话号码,邮箱,密码 CREATE  TABLE  users {    id INT  AUTO_INCREMENT PRIMARY  KEY;     username VARCHAR (50 ),     phone VARCHAR (20 ),     email VARCHAR (100 ),     password VARCHAR (50 ) } 
 
表连接 表联立,连接俩数据表
MySQL中的表连接分为以下几种:     内连接(Inner  Join ):返回两个表中的匹配行,只有在两个表中都存在匹配时才返回数据。(两者都存在)         SELECT  *  FROM  table1,table2 where  table1.id= table2.id;     外连接(Outer  Join ):左外连接(Left  Outer  Join )和右外连接(Right  Outer  Join ),其中左外连接返回左表中所有行以及右表中匹配的行,而右外连接则返回右表中所有行以及左表中匹配的行。         左外连接:              以左表为准,右表没有符合左表的数据则返回NULL              简单理解:左表显示全部,右表仅显示匹配项。             SELECT  *  FROM  table1 LEFT  JOIN  table2 ON  table1.id= table2.id;     自连接(Self Join ):在同一张表中进行连接,可以将一张表看作两张表。     交叉连接(Cross  Join ):返回两个表中所有可能的组合,也称为笛卡尔积。 
 
举例
SELECT  column_name(s)FROM  table1JOIN  table2ON  table1.column_name =  table2.column_nameJOIN  table3ON  table2.column_name =  table3.column_name;column_name(s):         要查询的字段 table1,table2,table3:   数据表1 ,2 ,3  table1.column_name, table2.column_name, table3.column_name:     用来将数据库表两两互相连接的语句,前提是两数据表有相同的字段。 
 
子查询 1. 借用第二表,对第二表进行筛选    两表的列:     table1 : id,username,sal     table2 : id,age,home_addr     查询语句:     SELECT   table1.username as  name,table2.age as  age FROM  table1 join  (         SELECT  id,age FROM  table2     ) as  table3 on  table1.id= table3.id; 2. 子查询关键字    in  , ont in  , exists  , not  exists      exists (select  语句)         EXISTS :如果子查询返回任何行,则返回真值。             存在记录:true  (包括null )             不存在录:false  = >  记录         NOT  EXISTS :如果子查询没有返回任何行,则返回真值     exists 举例:         这个查询中,子查询从customers表中检索与当前订单相应的客户记录。如果客户存在,则主查询从orders表中返回相应的订单记录。如果不存在,则不返回。         SELECT  *          FROM  orders o         WHERE  EXISTS  (           SELECT  *            FROM  customers c           WHERE  c.customer_id =  o.customer_id         ); 
 
记录联合 
UNION: 合并两个或多个 SELECT 语句的结果集时,删除重复的行。
UNION 操作符只会选出不同的值,不会返回重复的值。
 
UNION ALL: 合并两个或多个 SELECT 语句的结果集时,保留所有行,包括重复的行。
UNION ALL 操作符会选出所有的值,包括重复的值。
 
 
SELECT  Name FROM  Table1UNION SELECT  Name FROM  Table2;
 
MYSQL支持的数据类型 数值类型:     整型(TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT)     浮点型(FLOAT, DOUBLE, DECIMAL)。 日期和时间类型:DATE, TIME, DATETIME, TIMESTAMP, YEAR。 字符串类型:CHAR, VARCHAR, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT, BINARY, VARBINARY, TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB, ENUM, SET。 其他类型:BIT, BOOLEAN, JSON, GEOMETRY, POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION。 
 
数值类型 TINYINT:          有符号的范围为-128 到127 ,               无符号的范围为0 到255 。         占用1 个字节。 SMALLINT :         有符号的范围为-32768 到32767          无符号的范围为0 到65535 。         占用2 个字节。 MEDIUMINT:          有符号的范围为-8388608 到8388607          无符号的范围为0 到16777215 。         占用3 个字节。 INT 或INTEGER :         有符号的范围为-2147483648 到2147483647          无符号的范围为0 到4294967295 。         占用4 个字节。 BIGINT :         有符号的范围为-9223372036854775808 到9223372036854775807          无符号的范围为0 到18446744073709551615 。         占用8 个字节。 FLOAT :         单精度浮点数,精度为大约7 位小数。         占用4 个字节。 DOUBLE :         双精度浮点数,精度为大约15 位小数。         占用8 个字节。 DECIMAL :         高精度小数,支持存储大数值并保持精度,适用于财务计算等场景。         DECIMAL (M,D) 表示一个有符号的精度为 M,小数位数为 D 的小数。M 和 D 的最大值为65 。 
 
无符号化-UNSIGNED CREATE  TABLE  example (  id INT  UNSIGNED,    value  INT          ); 
 
填充 CREATE  TABLE  example (  id INT (5 ) ZEROFILL PRIMARY  KEY,    name VARCHAR (20 )           ); INSERT  INTO  example (id, name) VALUES  (1 , 'John' ), (10 , 'Jane' ), (100 , 'Bob' );SELECT  *  FROM  example;输出如下: + |      id |  name | + |   00001  |  John | |   00010  |  Jane | |   00100  |  Bob  | + 
 
自动递增和主键约束 AUTO_INCREMENT 和 PRIMARY_KEY
AUTO_INCREMENT 自动递增 PRIMARY_KEY  主键约束     主键约束:列值必须是唯一的,不可以重复             主键列的值不能为空,即主键列不能有 NULL  值,因为 NULL  不是一个有效的主键值。             主键列的值必须是唯一的,即不能在表中存在两个或多个主键列的值相同的记录。             主键列的值不能被更新或删除,因为它们在表中是唯一的标识符。 CREATE  TABLE  users (    id INT  AUTO_INCREMENT PRIMARY  KEY,     name VARCHAR (50 ),     age INT  ); alter  table  表名 drop  primary  key(字段名)
 
设置默认值 CREATE  TABLE  person (    id INT  NOT  NULL  AUTO_INCREMENT,     name VARCHAR (50 ),     age INT  DEFAULT  18 ,      PRIMARY  KEY (id) ); 
 
日期和时间类型 字符串类型