数据库基础

常见数据库:

MySQL(中小型,3306),Oracle(中大型,1521),sql server,Access

各数据库与网页编程语言的搭配常见的搭配(大概率这么配,可能更新也适配其他的):

   ASP和.NET:MicrosoftSQL Server

   PHP:MySQL、PostgresQL

   Java: Oracle、MySQL

 JDBC: java连接数据库的包      java和不同数据库要有不同的jar包

数据库连接工具:    Navicat

        

数据类型

date            YYYY-MM-DD      2023-10-31          time           HH:MM:SS    14:54:10                        year           YYYY       2023             datetime           YYYY-MM-DD HH:MM:SS        

时间

主键,外键:

主键:唯一,不能为空

外键:

操作(操作大小写没区别)

分为三组

1.数据定义(Create、Drop)

             创建数据库:create database database_name;

             删除数据库:drop database database_name;

             创建数据表(创建mysql数据表需要以下信息:表名、表字段名、定义每个表字段)
             create table 表名 (属性名 数据类型 完整性约束条件,
             属性名 数据类型 完整性约束条件,
             属性名 数据类型 );

             create table tea(                             //tips:表名后不要空格直接加括号
             class int primary key,
             speciality varchar(10),
             teacher varchar(10),
             institute varchar(10)
             );

             删除数据库表:DROP TABLE table_name ;

2.数据控制(Grant、Revoke)

3. 数据操纵(Select、Insert、Update、Delete)  这个最重点

and 和 or 中 and的优先级更高

          插入语句
          insert into table_name(field1, field2,...fieldN)
          Values
          (value1, value2,...valueN);

         insert into tea values
        (1,'网络工程','张与','计算机学院'),
        (2,'习思想','李华','马克思学院'),
        (3,'自动化','吴用','物电院')

Select 属性列表
from 表名
[where 条件表达式1]
[group by 属性名1 [having 条件表达式2]]
[order by 属性名2 [asc | desc]]

* 可以表示所有字段 

查看数据库中的表结构 : desc 表名;

去除重复数值:   select distinct 字段名 from 表名;

Like匹配查询:    [not]like ‘字符串’;       例如 ......where name like "张三";
like匹配可含通配符%  或者 _ :例如........where name like "李%"  ........where name like "李_梦"              下划线只匹配单个字符        %多个字符 李世民

 AND多条件查询:    条件表达式1 AND 条件表达式2
OR多条件查询:       条件表达式1 OR 条件表达式2
 

limit 记录数 :limit n,m
n:开始位置     m:要检索的行数
行0 :检索出来的第一行为行0,而不是行1,
因此,limit 1,1将检索出第二行而不是第一行

排序:   order by 列名 [ASC | DESC]          列名或者第几个列           根据列名(第几个列)来排序
ASC:升序(默认升序)
DESC:降序

  分组查询   group by 将查询结果按某个字段或多个字段进行分组。字段中的值相等的为一组。
  group by 属性名 [having 条件表达式]                                                                                                having只能在Group by子句后使用,不能单独使用,只能对分组计算的结果进行筛选
 

in关键字查询(如果字段的值在集合中,则满足查询条件):[not]in (元素1,元素2....元素n)

Between查询范围: [not] between 取值1 and 取值2

集合函数:

count()用来统计记录的条数;                  例子:  select count(*) from chengji
sum()用来计算字段的值的总和;
avg()用来计算字段的值的平均值:
max() 用来查询字段的最大值;
min()用来查询字段的最小值。
 

命令行连接数据库:mysql -h (主机地址)-u (账号)-p

操作什么数据库:use 数据库名

展示数据库有那些:show databases;

显示指定数据库的所有表:show tables; 

查看表的信息:show columns from table_name;

正则表达式

是用某种模式去匹配一类字符串的一个方式 正则表达式的查询能力比通配字符的查询能
力更强大,而且更加的灵活。正则表达式可以应用于非常复杂查询
  

使用regexp关键字来匹配查询正则表达式:     属性名 regexp '匹配方式’

“^”查询以特定字符或者字符串开头的记录:    ......where name regexp ' ^王' (找姓王的)

"$"查询以特定字符或者字符串结尾的记录:   .......where name regexp'五$'(找什么五)

“.”匹配字符串中的任意一个字符:......where name regexp ' 王.'(找名字里有王的)

[..]字符集合 匹配所包含的任意一个字符:...where name regexp '["王""李"];                                             可以指定的集合[a-z],[1-9]             或者 ....where name regexp '王|李'

“[^字符集合]”    匹配指定字符以外的字符:      .....where phone regexp '[^1-8]'(找含9的电话)

匹配多个字符,* 和 + 都可以匹配多个该符号之前的字符。
+”:至少表示一个字符   一次或多次
*”:可以表示0个字符    ab*c 匹配 "ac"、"abc"、"abbc" 等,因为 b* 允许 b 字符重复零次或多次

‘{m}’或者’{m,n}’来指定字符串连续出现的次数:                                                                                          {m} 表示前一个字符或子模式必须精确重复 m 次                                                                                 select * from table where column regexp 'a{3}'      会匹配包含 "aaa" 的字符串                       {m,n} 表示前一个字符或子模式必须重复至少 m 次,最多 n 次

运算符:

算术运算符     比较运算符        逻辑运算符

                                      

查询函数:

联合查询 : union                  并操作 union、交操作 intersect、差操作 except

union查询默认不返回重复记录
union查询的表的字段必须一样
union查询的数据类型必须能兼融

如果你希望保留所有行,包括重复的行,可以使用 union ALL,它不去重

UNION用于合并具有相同字段结构的两个表的内容,主要用在一个结果中集中显示不同表的内容              你学校数据库,查老师和学生的ID,姓名      老师的表和学生的表 内容和起来了
select  id,name from teachers union  select id,name from students;

系统用户名:system_user()                                              select sytem_user();
 用户名:user()                                                                  select user();
 当前用户名:current_user()                                             select current_user();
连接数据库用户名:session_user()                                  select system_user();
数据库版本:version()                                                       select version();                                  数据库名:database()                                                           select database();
数据库读取路径:@@basedir                                          show variables like '%basedir%';              MYSQL安装路径:@@char                                             show variables like"%char%";
查看当前系统版本:@@version_compile_os                   select @@version_compile_os;

其它相关函数:
left(s,n)                            #返回字符串s最左边的字符 n是个数
right(s,n)                          #返回字符串s最右边的字符
substr(s,n,len)                #截取字符串s的第n个字符,且截取长度为len
 

判断当前用户的第一字符:         查询语句:select left(user(),1)=’r’;                                              判断当前用户的最后一个字符:  查询语句: select right(user(),1)=’r’;                                                                                 #正确返回1,错误返回0
截取当前数据第二个字符是否为r   查询语句: select substr(database(),2,1)=’r’;
 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值