数据库不区分大小写
新建一个teacher表
create table teacher(name varchar(20),sex char(1),birth DATE,birthaddr varchar(20)PRIMARY KEY(name))
表的内容包含员工姓名、性别、出生日期、出生城市。由于name、birthadd的列值是变化的,因此选择VARCHAR,其长度不一定是20。可以选择从1到255的任何长度,如果以后需要改变它的字长,可以使用ALTER TABLE语句。性别只需一个字符就可以表示:"m"或"f",因此选用CHAR(1);birth列则使用DATE数据类型。
PRIMARY KEY为主键设置为name
添加teacher表数据
insert into teacher(name,sex,birth,birthaddr) values('ruthy','W','1993-10-09','USA')
insert into teacher values('ruth','W','1999-10-09','UK')
第一种情况是为了方便知道添加的数据的含义,第二种方法简写,快捷。
查询teacher表数据
1.select * from teacher where name='john'
*表示可以从teacher中选择输出的数据项为全部,也可以为name,sex,birth,birthaddr;where后面为选择输出语句
此句话的意思是从teacher中选择name='john'的项,并输出所有数据
1.2select pro_name, pro_price from products where prod_price between 5 and 10
between `` and `` 需要给予最大值和最小值
1.3select pro_price from products where prod_price is NULL
返回商品价格为空,而不是0
1.4 select pro_price from products where prod_price <10 and(or) pro_id=1003
and 同时匹配两个条件,or匹配任一个条件即可。
1.5 select pro_price from products where (prod_id=1002 or pro_id=1003) and prod_price <10
若不加括号,and优先级比or高,则该句意思为pro_id=1002 and pro_price <10 ,再看pro_id=1003
1.6 select pro_price from products where prod_id in (1002 ,1003)
in在哪个范围里指出
1.7select pro_price from products where prod_id not in (1002 ,1003) order by pro_name
pro_id不在1002,1003
2.检索不同行
select distinct vend_id from products
select distinct vend_id从products表里面只返回不同的vend_id,即相同的vend_id只返回一个。
3.限制查询 limit子句
select prod_name from products limit 5
从表products 返回pro_name数据不超过5行,那下次继续检索5行命令为:select prod_name from products limit 5,5
第一个5为开始行位置,第二个数为要检索的行数。带一个值的总是从第一行开始输出 ,输出几行。
注意:检索出来的第一行为0而不是1.因此,limit 1,1将检索出第二行而不是第一行。
4.排序检索order by
select pro_name from products order by pro_name,pro_id
这句话指示MySQL 对pro_name列先以字母升序,再以商品id升序排序数据。
select pro_name from products order by pro_name desc
这句话指示MySQL 对pro_name列以字母降序排序
select pro_name from products order by pro_name desc,pro_id
这句话指示MySQL 对pro_name列先以字母降序排序,再以pro_id升序排序
5.like操作符 % 表示任何字符出现任意次数
select pro_price,pro_id from products where prod_name like 'jet%'
匹配peo_name以jet开头的字符
select pro_price,pro_id from products where prod_name like '_jet'
下划线_ 只匹配单个字符而不是多个字符
注意:不要过度使用通配符, 不要把通配符放在搜索开始处,注意通配符的位置
6.查询部分数据
select top 5 name,sex,birth,birthaddr from teacher(查询ID为前五的teacher信息,此处teacher没有写ID属性,可自行测试)
查询teacher表和student表
select * from teacher t inner join student s on t.name=s.name where s.name='ruth'teacher t 为teacher命名为t
student s 为student命名为s 为了书写方便
inner join为联立student表和teacher表,on为联立条件(此处为student.name=teacher.name略写为t.name=s.name)
where 为选择输出条件(此处为s.name='ruth')
删除teacher表数据
delete from teacher where name='john'
此句话的意思是从teacher中删除name='john'的项
更新teacher表数据
update teacher set birthaddr='china' where name='ruth'
此句话的意思是更新teacher中删除name='ruth'的项的birthaddr的值为china
用文本将数据装入teacher表
创建一个文本文件“mysql.txt”,按表结构排好每行每条记录,用定位符(tab)把值分开。
abccs f 1977-07-07 china
mary f 1978-12-12 usa
tom m 1970-09-02 usa
使用此命令将文本文件“mytable.txt”装载到表中:
Load data local infile "mytable.txt" into table mytable;
数据传入命令load data local infile "文件名" into table 表名;
注意:你最好将文件复制到mysql/bin目录下,并且要先用use命令选表所在的库。
修改teacher表名字
alter table teacher rename t
此句话的意思是把teacher名字改为t
查看teacher表结构
describe teacher
此句话的意思是 查看teacher表的数据类型,也可以直接查看设计表为teacher表增加一列
alter table teacher add column 列名字 char(1);
此句话的意思是 为teacher表增加一列数据,数据类型为char(1)为teacher表删除一列
alter table teacher drop column 列名字
此句话的意思是 为teacher表删除一列数据