数据库基础

1、查看windows系统已经启动的服务:net start。


2、dos命令打开和关闭mysql服务:net start mysql;net stop mysql。


3、创建数据库命令:create dababase database_name;
database_name 表示需要创建的数据库名,数据库名不能重复;
其命名格式与很多命名规则是相同的,脑子正常的人都不会出
错的。


4、查看现存的数据库命令:show databases;


5、选择数据库命令:use database_name;
database_name 表示需要选择使用的数据库名。


6、删除数据库命令:drop database database_name;
database_name 表示需要删除的数据库名。


7、数据库所支持的数据类型:
整型:    tinyint(1),smallint(2),mediumint(3),
int/integer(4),bigint(8);
浮点型:float(4),double(8);
定点型:dec/decimal(精度比double更高,很少用。);
位类型:bit(1~8);
日期时间类型:date(4),datetime(8),timestamp(4),
time(3),year(1)。


日期时间类型注:表示年月日用date,
表示年月日时分秒用datetime,
表示时分秒用time,
表示年用year,
经常插入或者更新日期用timestamp。


字符串类型:

char系列:char(0~255),varchar(0~65535);


text系列:tinytext(0~255),text(0~65535),
mediumtext(0~167772150),

longtext(0~4294967295);


binary系列:binary(长度待定),

varbinary(长度待定);


blob系列:tinyblob(0~255),blob(0~2^16),
mediumblob(0~2^24),
longblob(0~2^32)。


字符串类型注:binary和blob都是可以存储2进制数据的,
比如视频,音频,图片等。后者可以存储
大量,前者可以存储少量。

注:括号内为字节数。

8、数据库表的创建命令:
create table table_name(
字段名  字段类型,
字段名  字段类型,
字段名  字段类型,
...
);


字段的多个属性用空格隔开就行;
table_name 表示需要创建的表名。


8.5、查看数据库表命令:show tables;


9、数据库中查看表结构命令:describe table_name;
describe可以简写为desc;所以一般写成:desc table_name;
table_name 表示需要查看的表名。


10、数据库中查看表详细定义信息命令:
show create table table_name;
可以在命令后面加参数  \G ,使得结果更加美观,注意必须是
大写的G。所以可以写成:show create table table_name \G 
table_name 表示需要查看的表名。


11、删除表命令:drop table table_name;
table_name 表示需要删除的表名。


12、修改表命令:
修改表名:
alter table old_table_name rename new_table_name;
增加字段:
alter table table_name add 字段名 字段类型;
增加字段在第一个位置:
alter table table_name add 字段名 字段类型 first;
在指定的字段后面添加字段:
alter table table_name add 字段名 字段类型 after 字段名;
删除字段:
alter table table_name drop 字段名;
修改字段:
alter table table_name modify 字段名 字段类型;
修改字段名:
alter table table_name change 旧字段名 新字段名 旧字段类型;
修改字段名和字段类型:
alter table table_name change 旧字段名 新字段名 新字段类型;
修改字段的顺序:
alter table table_name modify 字段名1 字段1类型 first|after 字段名2;


13、操作表的约束:


单表基本约束分为以下几个:
not null   约束字段不能为空;
default   设置约束字段的默认值;
unique key(UK) 约束字段的值唯一,不能重复;
primary key(PK)约束字段为表的主键,可以作为该表记录的唯一标识;
aotu_increment 约束字段的值为自动增长;

以上约束可以分为单列约束和多列约束。也就是说可以只约束一个字段,也可以同时约束
好几个字段。


添加约束的方法:可以在建表的时候把约束用空格隔开跟在字段类型后面。
也可以用alter table来修改已经建好的表的约束。
推荐第一种方法,因为第二种方法会对数据造成混乱。


添加约束的语法在这里只举一例:
create table table_name(
字段名 字段类型 约束1 约束2 约束3 ... ,
字段名 字段类型 约束1 约束2 约束3 ... ,
...


);


补充一下单表约束的几个小知识点:primary key = not null + unique key,
主键约束可以分为单字段主键和多字段主键,这里只说单字段主键,
多字段主键在数据库进阶中再说。


下面主要记录一下关于外键的一些东西:外键就是构建两个表之间的参照关系,
可以把一个表成为父表,一个是子表。
语法:
create table table_name(
字段名 字段类型 约束1 约束2 约束3 ... ,
字段名 字段类型 约束1 约束2 约束3 ... ,
......


constraint 外键约束名 foreign key (字段名1)
references 表名 (字段名2) 


);
解释:上面的外建约束名用来标识约束名,字段名1就是此时创建的表需要建立外键的字段,
表名就是父表的名字,字段名2就是子表需要参考父表的字段名。


注意:子表设置外键的字段类型,必须与参考父表的字段类型相同。




==========================================(以上是关于数据库和表的基本操作)
==========================================(我是分割线)
==========================================(以下是关于表中数据的基本操作)

1、插入数据:
insert into table_name(字段名1,字段名2,字段名3,......)
values  (value1,value2,value3,......),
(value1,value2,value3,......),
(value1,value2,value3,......),
......
(value1,value2,value3,......);


解释:此语法可以插入任意字段的值,只需要将values的值与字段一一正确对应就行,
也必须注意相应字段的约束等条件。当然可以一次插入多条或者一条。


2、查询全部数据:
select * from table_name;
把这个单独拿出来说,是因为这条命令用的比较多。


3、插入查询结果:
也就是从另一个表中拿出数据放在这个表中,实现复制数据的功能。
insert into table_name(字段1,字段2,字段3,......)
select (字段1,字段2,字段3,......)
from table_name2;


这个应该不会常用,所以知道一下就行了,注意字段的个数和类型必须保持一致。




4、更新数据:
update table_name 
set 字段名1 = value1,
   字段名2 = value2,
   字段名3 = value3,
   ......
where condition;


解释:condition表示条件,比如说 


更新  部门表 
设置 部门工资=10000, 
    部门人数=12,
当   部门名称=技术部门;


这样就把部门表中的名称为技术部门的那条信息的部门工资和部门人数都更新了。
注意:如果没有where关键字,那么将更新全部表的字段信息。


5、删除数据:
delete from table_name
where condition;
这个和更新基本差不多,如果没有where条件的话那么就是删除表的全部记录。
注意这里是删除表中的数据,并不是删除表。


=========================================(以上是对数据的基本的增删改操作)
=========================================(我是分割线)
=========================================(以下是数据中最重要的查询操作)


1、简单数据记录查询


语法:select * from  table_name;
解释:查询表中的全部信息,这个在上面已经说过了。


语法:select 字段名1,字段名2,字段名3, ...... from table_name;
解释:查询表中相应字段的信息。调整字段名会使得显示的时候的字段顺序改变。


语法:select distinct 字段名1,字段名2,字段名3, ..... from table_name;
解释:关键字distinct作用是,避免重复数据的出现。


2、mysql支持的关系运算符


+,-,*,/,%。
可以用于对查询到的数据进行处理等等。当然只是显示的时候进行处理,并不能
改变表中的数据。


3、设置显示格式数据查询


mysql中提供函数concat()来连接字符串。看下面这个例子就会恍然大悟:


select conat(name,' 雇员的年薪为:',sal*12) yearsalary
from t_employee;

王超雇员的年薪为:120000

王鑫雇员的年薪为:120000


*4、带条件的数据查询


简单起见,都用*来代替各个字段。


以下的条件包括:>, <, =, !=, >=, <= 。
注意:在sql中,一般情况下字符串都要带单引号或者双引号。
数字的话就可以不带。


--------------------(基础)
单条件:
select * from table_name
where 字段名 条件 'value';


多条件:
select * from table_name
where 字段名1 条件 'value1' and 字段名2 条件 'value2';

注:多条件查询可以有很多个and。




--------------------(进阶)
条件查询的几个关键字:


between and  和  not between and;
is null  和  is not null 还有一个 not is null;
in   和  not in;(这个是集合查询,集合需要放在括号中)。


--------------------(高阶)


模糊查询关键字:like 与之对应的还有个 not like
通配符:下划线 _ (匹配一个字符)
百分号 % (匹配0到多个字符)


如果是 select * from table_name where 字段名1 like '%%'; 
则表示查找全部


注意模糊查询的条件要带单引号或者双引号。




*5、查询结果排序


关键字:order by
这里只说一句:
如果需要将查询结果排序,只需要在结尾添加 order by 字段名1 asc|desc;
如果需要按照多个字段排名,自需要写成:
order by 字段名1 asc|desc , 字段名2 asc|desc;
依次类推。 



6、限制查询数量


关键字:limit
这个意思就是,有的时候查询的结果数量太多,那么就需要限制输出的数目。
这里只说一句:
如果要限制输出数目,那么就在查询结尾添加:
limit offset_start,row_count;
解释:参数offset_start表示指定其实位置,参数row_count表示显示的数目。
一个例子就可以明白:
select * from t_employee 
where age > 18
limit 0,10;
这个例子的意思就是:查找表t_employee 中字段age 中大于18 的数据,限制
从0开始,显示10个。




7、统计函数和分组数据记录查询(基础部分的最后一个知识点)


统计函数有以下几个:
count() :计算出查询结果的条数
avg() :计算出字段的平均值
sum() :这个就很明显了,计算出字段的总和
max() :统计出字段中的最大值
min() :统计出字段中的最小值


统计函数之所以和分组查询放在一起是因为这两个通常是一起使用的。


举个例子就可以明白了:
select count(sex) from student where sex = '男';
select count(*) from student where sex = '女';
解释:求出表student中sex字段中sex为男的总数。
当用*号时,统计数目中包括NULL。


select avg(m_money) from teacher where m_money >= 10000;
解释:求出表teacher中m_money字段的m_money大于等于10000的平均值。


select sum(m_money) from teacher;
解释:求出表teacher中m_money字段的m_money的总和。


select max(m_money) from teacher;
解释:求出表teacher中m_money字段的m_money的最大值。


select min(m_money) from teacher;
解释:求出表teacher中m_money字段的m_money的最小值。


分组查询关键字:group by,group_concat(),having。


因为group by 单独使用的时候,默认查询出每个分组中的随机一条记录,具有很大的不
不确定性。


分组关键字一般与统计函数一起使用。
举一个例子看看:
mysql> select sex,group_concat(stuid) infor ,count(sex) number from student grou
p by sex ;
+------+-------------------------------+--------+
| sex  | infor                         | number |
+------+-------------------------------+--------+
| 女   | 2,26,28                          |      3 |
| 男   | 35,34,33,32,31,30,29,17,16,3 |     10 |
+------+-------------------------------+--------+
2 rows in set (0.00 sec)


附注:group by 后面可以跟多个字段。如果要对查询结果进行筛选,那么就用having,在这 里having的功能和where差不多,但是此处不能用where。


这里having的时候必须是select的东西,比如此处select sex 那么having后的条件只能是与sex相关的条件。







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值