SQL语言之DDL:数据定义语言
--建表语句:create table tableName(colName Type1,colName Type2......);
--练习1:创建表 persons 字段:pid int,pname varchar(20),age int(3),gender char(1)
create table persons(pid int,pname varchar(20),age int(3),gender char(1));
use bd1802
--显示表结构
--desc tableName
desc persons;
--show columns from tableName;
show columns from person;
--添加表字段语句:向表最后追加新字段
--格式:alter table tableName add (colName Type);
--练习2:给persons表添加新字段 birth timestamp
alter table persons add (birth timestamp);
--删除表字段语句
--格式:alter table tableName drop colName;
--练习3:删除persons 中的字段gender,再查看表结构
alter table persons drop gender;
--修改表字段类型
--格式:alter table tableName modify colName newType;
--练习4:修改表persons 的字段pid长度为4再查看表结构
alter table persons modify pid int(4);
--修改表字段名称
--格式:alter table tableName change oldColName newColName newType;
--练习:修改表persons 的字段pname为pnickname
alter table persons change pname pnickname varchar(20);
--修改表名
--格式:alter table oldName rename newName;
--练习:将表名persons改成student
alter table persons rename student;
--清空表结构(清空表里的数据 无法回收)
--格式:truncate table tableName;
truncate table teacher;
--删除表结构,即删除表对象
--格式:drop table tableName
--练习:创建一个表temp_01 字段有 tid integer(4) tname varchar(10)
create table temp_01 (tid integer(4),tname varchar(10));
--练习:删除表temp_01;
drop table temp_01;
--创建数据库
--格式:create database databaseName default character set character
--练习:创建一个数据库 database_temp;
create database database_temp;
--删除数据库
--格式:drop database databaseName;
--练习:删除数据库 database_temp;
drop database database_temp;
SQL语言之DML:数据操纵语言
--插入数据
--格式:insert into tableName values(value1,value2,...);必须按照建表字段顺序赋值
--格式:insert into tableName(colName1,colName2……)value(value1,
value2……),给指定字段赋值
--练习:建表teacher,字段,tid int(4),tname varchar(20),tage int(2),birth date
create table teacher(tid int(4),tname varchar(20),tage int(2),birth date);
--练习:插入一条数据 1001,高圆圆,38,'1983-10-12'
insert into teacher values(1001,'高圆圆',38,'1983-10-12');
--练习:插入一条数据 1002,夜华,40
insert into teacher values(1002,'夜华',40,null);
insert into teacher(tname,tid,tage)values('白浅',1003,100);
select * from teacher;
where 条件: 对表中的数据加条件进行限制,起到过滤的作用。
格式: where colName 关系运算符 value
[or|and 条件2]
关系运算符:
>,>=,<,<=,
等于:=,
不等于:!= 或 <>
null值操作:
1:在条件中,不能使用=或者!= 或者<>,而是使用 is或者is not
2:在select子句中,使用关系运算符
--update关键字:修改表中的数据
--格式:update tableName set colName1=value1,colName2=value2 [colName=value3][where 条件];
--练习2:修改表中temp_t02中的tid为1002的address为英国,人名为michel
update temp_t02 set address='英国',tname='michel' where tid=1002;
select * from temp_t02;
--练习3:将生日为null的tname改为'general'
--null值操作:使用is|is not
--在update子句中可以使用关系运算符
update temp_t02 set tname='general' where tbirth is null;
--练习4:将tid为1001的tbirth改为'2008-8-8'
update temp_t02 set tbirth='2008-8-8' where tid=1001;
--练习5:将tid为1002的address改为null
update temp_t02 set address = null where tid=1002;
--数值类型的学习
--1,数值类型:tinyint smallint mediumint int/integer bigint float double decimal
--tinyint:1字节大小,范围为-128~127
--smallint:2字节大小,范围-32768~32767
--insert into temp_t03 values(32768);超范围
--int/integer:常用数值类型,占4字节,范围:-2147483648~21左右
--bigint:大整数类型,范围与java语言的long的范围类似
--float与double
--float:单精度类型,占4字节大小
--不规定长度时,默认四舍五入,默认保留0或1位
--规定长度时,float(m,n) m表示数据有效位数,n表示小数点后保留的位数
--insert into salary_t01 values(10000.5678);//超位数,整数位最多为m-n
--float(m)与float(m,0)一致
--double:双精度类型,占8字节大小
--有效长度写法:double(m,n):有效位数m,小数点后保留n位,整数位m-n
--decimal:与float和double的用法一样,decimal(m,n)
--日期类型:date,time,datetime,timestamp,year
--date:日期类型,默认格式:yyyy-mm--dd 范围是1000-1-1/9999-12-31
--time:默认格式:HH:mm:ss 范围1:-838:59:59~838:59:59
--范围2:写年月日:23:59:59
--datetime :默认格式:yyyy-mm-dd hh:mm:ss
--范围:1000:1:1 -23:59:59/9999:12:31 23:59:59
--timestamp:时间戳类型
--范围:1970-01-01 00:00:00/2037
--year:年 默认格式yyyy 范围1901-2105
--字符串类型:char ,varchar,tinyblob, tinytext,blob,text,mediumblob,
mediumtext,longblob,longtext
--char定长字符串类型,范围0-255个字节
--char(10):插入数据时,最多插入10个字节,如果插入的字节不足,10字节时,也占内存10字节大小
--定义数据类型时,最长长度为255
--varchar:可变字符串类型,范围0-255
--规定长度时,最大值255
--varchar(10):表示最多存储10个字节,如果不满足10个字节,在内存中按照实际字节数占用
--blob: 一种字符类型,在内存中显示二进制 范围:0~65535
--longblob:极大字符串类型,存储的是字符对应的字节码
--longtext:极大字符串类型,存储的是字符
--上述两种类型的字节范围,0-java语言的int最大值的2倍+1
--mysql常用函数学习
--虚表:数据库为程序员提供的一个没有字段的表
--作用:一般用来当做一个查询语句的基表
--mysql数据库特点:在运算时,可以不基于表操作
--mysql常用函数学习
--一.常用字符串
--1.ascii(str):返回指定字符串的第一个字符的ascii码
--字符串为空字符串时,返回0
--字符串为null,返回null
--2.ord(str):如果字符串的第一个字符是单字符时,与单字符ascii(str)一样
--如果不单字节,如UTF8的中,是第三个字节
--返回值为:第一个字节*256+第二个字节*256+第三个字节
--3.conv(n,from_base,to_base),将from——base进制中的字符n转换成to_base进制下的表示方式
--16进制中的字符a转换成2进制来表示
--4.bin(n),oct(n),hex(n)
--将数值n转成对应的二进制,八进制,十六进制
--5.char(n..)返回多个ascii码组成的字符
--6.content(str1,str2..):将多个字符串拼接成一个字符串
--如果有一个参数为null,返回的是null
--length(str)/octet_length(str)
--上述两个函数,返回的是默认字符集下的字符串的所有字节数
--char_length(str)/character_length(str)
--这两个函数都是返回字符串的字符长度
--练习:统计一下'上海自来水来自海上'的字节长度
select char_length('上海自来水来自海上');//9
select character_length('上海自来水来自海上');//9
select length('上海自来水来自海上');//27
select octet_length('上海自来水来自海上');//27