数据库------基础操作

13 篇文章 0 订阅

SQL:结构化查询语言(structure Query Language),用于访问和处理数据库的标准的计算机语言。

数据库一般分为关系型数据和NoSql数据库, 关系型数据库 一般使用sql 操作。

数据库种类: mysql、 sql Server、Oracle、 DB2、mongDB。

数据库服务器、数据库、表之间关系:

 

SQL语言按其功能分为4类:

1、数据定义语言(DDL Data Definition Language)

创建、修改或删除数据库中表、视图、索引等对象的操作,常用命令为create、alter和drop

2、数据查询语言(DQL Data Query Language)

按照指定的组合、条件表达式或排序检索已存在的数据库中数据,不改变数据库中数据,常用命令为select

3、数据操纵语言(DML Data Manipulation Language)

向表中添加、删除、修改数据操作,常用命令有insert、update和delete

4、数据控制语言(DCL Data Control Language)

用来授予或收回访问数据库的某种特权、控制数据操纵事务的发生时间及效果、对数据库进行监视等操作 

常用命令有GRANT、REVOKE、COMMIT、ROLLBACK

数据库操作:

1、查看当前数据库服务器有哪些数据库: show databases;

 2、使用当前数据库服务器下的某一个数据库:use 数据库名称;  

3、创建数据库:create database 数据库名称;

 4、删除数据库:drop database 数据库名称  

 数据表操作:

1、创建数据表:  

2、添加一条数据

3、修改一条数据

4、删除一条数据

5、数据查询

创建数据库:

Create database dbname;

创建数据表:

语法:

create table table_name  (column_name1 column_type1[, column_name2 column_type2[, …]] )

a、table_name——表名

b、column_name——字段名

     表名与字段名命名规则:

       i、必须以字母开始

       ii、必须是1到30 个字符长度

       iii、只能包含字母、数字、下划线“_”、美元符“$”和井号“#”

       Ⅳ、不能使用Oracle的关键字

      Ⅴ、同一个用户所拥有的对象之间不能重名

c、datatype——数据类型

       常用数据类型:

       i、char(size):存储固定长度的字符串。参数size指定了长度,如果存储的字符串长度小于size,用空格填充,默认长度为1,最长不超过2000个字节;

       ii、varchar2(size):存储可变长度的字符串。参数size指定了该字符串的最大长度。默认长度为1,,最长不超过4000个字节;

       iii、number(p,s):存储变长的数字。既可以存储浮点数,也可以存储整数。p表示数字的最大位数(如果是小数包括整数部分、小数部分,不包括小数点,p默认是38位),s指小数位数

       Ⅳ、timestamp:和DATE类型大致相同,不过timestamp精确到了秒后6位小数

       Ⅴ、clob:存储单字节字符大数据。和varchar2数据类型相似,最大可以存储4G的数据,可以用来存储非结构化的XML文档

       ⅶ、blob:存储无结构的二进制大数据。最大可以存储4G的数据,可以用来存储图像、视频、音频等信息;

d、[default default_value]——设定字段默认值

***约束:分为字段级别约束和表级别约束:字段级约束:只为单个字段添加约束;表级约束:为一个或多个字段添加约束

①、not null:指定字段不能为空,只能定义为字段级约束

②、unique:指定字段的值(或字段组合的值)对于表中所有的行必须是唯一的。对于无非空约束的字段,唯一键约束允许输入空值,且包含空值的行可以有多个。可以为字段级别约束,也可以为表级别约束,表级约束时可以定义复合唯一键。主键是表中每行数据的唯一标识。

③、primary key:指定主键。该约束强制字段或字段组合必须具有唯一性且每个字段不能为空。可以为字段级别约束,也可以为表级别约束。

 

示例:

create table stuinfo(
stu_no  varchar(11) not null primary key,
stu_name varchar(50) not null,
age int(2) ,
gender int(1)  default 1
);

 

 

 修改数据表结构:

修改goods表添加一个主键。

ALTER TABLE `goods`
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`, `goods_name`);

修改数据:

update table_name set column_name1 = column_value1 [, column_name2 = column_value2[, …]] where column_name3 = column_value3[ and | or column_name4 = column_value4[ and | or …]]

示例:

update stuinfo set stu_name='小明', age=18 where stu_no = '12345678945';

 

 删除表:

Drop table 表名;

删除数据:

delete from table_name where column_name1 = column_value1 [ and | or column_name2 = column_value2[ and | or …]]

示例:

delete from stuinfo where stu_no='12345678943';

清空表数据TRUNCATE

TRUNCATE table test.stuinfo;

与delete 区别:

1> delete 删除所有的数据之后当事务没提交,可以将数据回滚。Truncate不可以。

2> delete 删除所有的数据之后,数据占用的空间还在,truncate 将占用的表空间也清除掉。

 查询语法结构:

Select distinct[字段名 ] from  tablename

通配符*代表所有的字段:

查询所有列的数据

Select * from stuinfo

查询固定列的数据,列的顺序与SQL语句中列的顺序保持一致:查询学生姓名、学生编号

select stu_name, stu_no from stuinfo;

对查询字段进行重命名(列原名与重命名之间可以是as 或者省略as不写。)

select stu_name '学生姓名', stu_no '学生编号' from stuinfo;

select stu_name as '学生姓名', stu_no as'学生编号' from stuinfo;

如果SQL语句中出现自定义字符串,一定要使用单引号或双引号包围

去重操作:使用关键字 distinct

select distinct stu_no from stuinfo;

字符串拼接函数concat(字符串, clolumn0, clolumn1 ... )

select concat('学生姓名:',stu_name) stuName, concat('学生编号:',stu_no) stuNo

 from stuinfo;

条件查询 between and :

select * from stuinfo where id between 3 and 8

条件查询 in, not in

select * from stuinfo where id = 3 or id = 5 or id =8;

相当于

select * from stuinfo where id in (3, 5, 8);

模糊条件查询 like, not like :一般需要使用两个通配符 %代表任意个字符,_代表一个字符。

select * from stu_info where stu_name like '白%';
select * from stu_info where stu_name like '小_';

条件查询:null 与not null    null 与‘’不同,需要注意

select * from stu_info where tel_no is null;

多表链接查询:

1> 以学生表与班级表作为例子,查询学生班级信息:

Select 字段名 from 表1、表2 where 查询条件

例子:

select stu.stu_no, stu.stu_name, stu.age, stu.email, cl.class_name  from stu_info stu, class_info cl where stu.class_id=cl.id;

2>左连接:以left关键字左边的表为主表,列出所有符合主表的数据记录,如果副表有相对的数据记录则显示,如果没有则显示为null;

Select 字段名 from 表1 left join 表2 on 表的关系条件

3>右链接:以right关键字右边的表作为主表进行查询,列出所有符合主表的数据记录,如果副表有相对的数据记录则显示,如果没有,则对应的字段显示为null;

4>排序:语法 order by 字段 ASC|DESC;

5>group by. 

 注释

表注释

comment on table 表名 is '注释内容';

字段注释

comment on column 表名.字段名 is '注释内容';

 函数

Count()函数:

select count(id) from stu_info ;

Count(字段名)可以使用表中任何字段,最好使用主键或者索引,也可以使用一个数字常量;

select count(0) from stu_info;

Sum()函数

获取所有学生的年龄的和。

select sum(age) from stu_info; 

Avg()函数

获取所有学生的平均年龄:

select sum(age)/count(id) from stu_info;

等同于

select avg(age) from stu_info;

Now() 与sysdate()函数:

表示获取当前时间:select now(); 或者select sysdate();

可以使用select 做简单的数学计算如:select 1+1;

Max()与min()函数:

获取所有学生中年纪最大的是多少?

Select max(age) from stu_info;

获取所有学生中年纪最小的是多少?

Select min(age) from stu_info;

Limit查询用法:select * from 表名 limit 开始下标, 数据条数。

查询10条学生信息。

Select * from stu_info limit 0 , 10;

 数据排序:                

 order by 栏位名称 asc; 由小到达        

 order by 栏位名称 desc; 由大到小

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值