SQL基础语法

1.建库建表语法

#建库
create database if not exists dataname defaule charset utf8;
#建表
create table if not exists runoob_tbl(
runoob_id int primary key auto_increment,
runoob_title varchar(20) not null,
runoob_author varchar(20) not null,
submission_date date not null
)

2、字段数据类型

MySQL中定义数据字段的类型对你数据库的优化是非常重要的。

MySQL支持多种数据类型,大致分为三大类:数值、日期\时间和字符串(字符类型)。

        一、 数值类型

类型大小范围用途
INT4 bytes(-2147483648 , 2147483647)大整数值
FLOAT4 bytes(3.4e-38,3.4e38)

单精度

浮点数

DOUBLE8 bytes(1.7e-308,1.7e308)

双精度

浮点数

                注:MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT
        二、日期和时间类型

类型大小范围格式用途
DATE3 bytes1000-01-01/9999-12-31YYYY-MM-DD日期值
TIME3 bytes'-838:59:59'  /  '838:59:59'HH:MM:SS时间值或持续时间
YEAR1 bytes1901 / 2155YYYY        年份值
DATETIME8 bytes1000-01-0100:00:00/9999-12-3123:59:59

YYYY-mm-DD

HH:MM:SS

混合日期和时间值
TIMESTAMP4 bytes

1970-01-01  00:00:00  /  2038

结束时间是第2147483647秒,北京时间2038-1-1911:14:07,格林尼治时间2038年1月19日凌晨03:14:07

YYYYMMDD

HHMMSS

混合日期和时间值,时间戳

        注:每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。

        三、字符串类型

类型大小用途
char0-255 bytes定长字符
varchar0-65535 bytes定长字符串
test0-65535 bytes长文本数据

         注:(1)char(n)和varchar(n)中括号中n代表字符的个数,并不代表字节个数,比如:char(30)就可以存储30个字符。char和varchar类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。

                (2)TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。对应的这4种BLOB类型,可存储的最大长度不同,可根据实际情况选择

3、增删改查语法

        一、插入数据,我们将使用SQLINSERTINTO语句向MySQL数据表runoob_tbl插入数据

insert into runoob_tbl(runoob_title,runoob_author,submission_date)VALUES
("学习PHP","菜鸟教程",NOW()),
("学习MySQL","菜鸟教程",NOW()),
("JAVA教程","RUNOOB.COM","2016-05-06");

        注:在以上实例中,我们并没有提供runoob_id的数据,因为该字段我们在创建表的时候已经设置它为auto_increment(自动增加)属性。所以,该字段会自动递增而不需要我们去设置。实例中now()是一个MySQL函数,该函数返回日期和时间。

   二、 接下来查看数据,查询数据

select * from runoob_tbl;

         输出结果:

  三、删除数据

delete from runoob_tabl where runoob_id=3;

         输出结果:

 四、修改数据

update runoob_tbl set runoob_author="W3Cschool" where runoob_id=1;

        输出结果:

4、表关联查询 

        一、表关联查询(两表,多表)     

                内连接 inner join   

                                  select * from A inner join B on A.id = B.id

                左连接 left join     

                                select * from A left join B on A.id = B.id

                右连接 right join

                                 select * from A right join B on A.id = B.id

                全连接

                        MySQL Full Join的实现因为MySQL不支持FULL JOIN,                                                                     下面是替代方法 left join+union(可去除重复数据)+ right join                                                               select * from A left join B on A.id = B.id (where条件)union select * from A right join                         B on A.id = B.id (where条件);

        二、联合查询union

                        SELECT  column_name(s) FROM  table1 UNION SELECT  column_name(s)                         FROM  table2;

                        注:默认地,UNION 操作符选取不同的值。如果允许重复的值请使用 UNION                         ALL。UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相                          似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。

         三、嵌套子查询

                        select * from(select * from 表名)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值