mysql中最常用到的数据类型,约束条件,以及表,字段,行的crud操作指令,function和precedure之间的区别,索引,安全,事务

数据库总结

传统记录数据的缺点:不易保存,备份困难,查找不便

数据库:存储数据的仓库,描述一个事务的基本信息

优点:1.持久化存储

2.读写速度极高

3.保证数据的有效性



RDBMS

relational database management system

军火当前主要使用两种类型的数据库:1.关系型数据库,2非关系型数据库

关系型数据库的主要产品:

oracle:主要大型项目中使用,银行,电信等项目

mysql:web时代使用最广泛的关系型数据库

ms sql server: 微软的项目中使用 (Microsoft Corporation 微软公司)

sqlite: 轻量级数据库,主要应用在移动平台

关系型数据库核心元素

数据行(一条记录,相当于python中的实例对象)   实例对象

数据列(字段,相当于python中实例对象的属性)   字段 实例对象的属性

数据表(数据行的集合,相当于python中的列表)

数据库(数据表的集合,一个数据库中能够有n个数据表)



SQL

structured Query Language

结构化查询语言

在数据库中进行操作的脚本称为sql ,结构化查询语言,

当前关系型数据库都支持使用sql语言进行操作oracle,mysql,ms sql server, sqlite

sql语句主要:

1.DQL:data query language   查询语言,select

2.DML:data manager language 操作,增删改,update,delete,insert

TPL:事务处理语言:begin transaction,commit,rollback

DCL:data control language:进行授权与回收,grant,revoke

DDL:data define language:数据库,表的管理:create,drop

CCL:指针控制语言:控制指针完成表的操作,declare cursor

对于web程序,重点是数据的crud,必须熟练编写DQL,DML能够编写DDL完成数据库

表的操作,

sql是一门特殊的语言,专门用来操作数据库

不区分大小写



MYSQL

特点:免费开源,不要钱 跨品台,提供多语言调用的API接口,使用范围广,

基本使用

服务器端安装

终端:sudo apt-get install mysql-server

用于:接收客户端的请求,执行sql语句,管理数据库

服务器端一般以服务方式管理:名称为mysql

启动,停止,重启

sudo service mysql start

sudo service mysql stop

sudo service mysql restart

查看进程中是否存在进程mysql服务

ps ajx|grep mysql

grep(gelobal regular expression print)

配置文件目录为/etc/mysql/mysql.cnf

客户端:为开发人员与dba使用,通过socket方式与服务端通信,常用的有

navicat命令行mysql



客户端命令

sudo apt_get install mysql-client

mysql --help :详细连接的命令查看帮助文档

mysql -uroot -p  mysql: 进入mysql命令行

ctrl +d ,quit ,exit 退出



                  数据

数据库 -----数据表-------数据行(实例对象)-----数据列(实例对象的属性)字段

dadabase--table---select,update,delete,insert,----alter table add/change/,p/\

modify

使用数据类型的原则:够用就行,尽量使用取值范围小的,而不用大的,可以节省存储空间

常用数据类型: 整型:int bit

小数:decimal

枚举:enum

字符串: char,varchar,text(大于4000)

日期类型: date,time ,datetime

对于图片,视频,音频等文件,上传到某个服务器上,然后在表中存储这个文件的保存路径

约束:primary key 主键 唯一标示

auto_increment :自动增长

unsigned:无符号的整形 signed

not null:非空

unique:唯一,此列的值不允许重复

default:默认值,不填以默认值,填写以填写为准

foreign key:外键,一般不用,:增加了数据与数据之间的耦合性,不利于后期维护,优化



mysql命令行连接

mysql -uroot -p

密码:mysql

退出登录:ctrl+d ,quit,exit

select version(); 查看版本

select now(); 显示当前时间

prompt  :修改输入提示符  可以用 \D,\d,\h,\u \Date \databasee\user\host


数据库操作命令

show databases;

use 数据库名;

select database();查看当前使用的数据库

create database 数据库名 charset=utf8; (字符集格式设置成utf8)创建数据库时使

drop database 数据库名; 删除数据库



数据表的操作执令

show tables;

desc 表名; 查看表结构 describle

create table 表名(字段,类型,约束条件)

alter table 表名 add 列名 类型;

alter table 表名 change 旧列名,新列名 类型;

alter table 表名 modify 列名 修改类型

alter table 表名 drop 列名; 删除列

drop table 表名            删除表



curd

create update refer delete



数据库设计

关系性数据库建议在E-R模型的基础上,根据策划设计,抽取出来模型与关系,

制定出表结构,

开发用,设计数据库轮子:db designer ,power designer,直观的看到实体与实体之间的关系

三范式:列不可分,唯一表示,引用主键

E-R模型  e代表entry 一对一,一对多,多对多,

逻辑删除 isdelete bit default 0

消除重复行 distinct:在select 后面列前使用distinct可以消除重复的行

聚合函数

count(*)

mid(列) max(列) avg(列) sum(列)



分组:

按照字段分组,表示此字段相同的数据会被放到一个组中

having是对分组后的数据筛选



  连接查询

当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集,再选择合适的列返回

内连接查询:为两个表匹配到的数据

右连接查询:两个表匹配到的数据+ 右表特有数据

左连接查询 两个表匹配到的数据+左表特有数据

select  * from students inner join classes on students.cls_id = classes.id;

on后面是以什么条件连接承德大表,然后以他们公有的属性来展示结果集,

slect 是选择要显示的内容

时间: 2024-10-21 04:06:48

mysql中最常用到的数据类型,约束条件,以及表,字段,行的crud操作指令,function和precedure之间的区别,索引,安全,事务的相关文章

25.mysql中的常用工具

25.mysql中的常用工具25.1 mysql客户端连接工具跳转至mysql安装目录下的bincd C:\Program Files\MySQL\MySQL Server 5.7\binmac下cd /usr/local/Cellar/[email protected]/5.7.22/bincd /usr/local/mysql/bin mysql [选项] [database]; --连接数据库 use [dbname]; --进入要操作的数据库选项表达方式语法: “-”+选项单词的缩写字符

VS中生成、清理项目、调试、开始执行(不调试)、Debug 和 Release等之间的区别

一.生成和重新生成 "生成"的时候只对你改动过的文件重新生成没有改动过的文件不会重新生成: "重新生成"是对所有的文件都重新生成. 以cpp为例当你只改动某些.cpp之类的文件的时候可以用生成省了编译没有改动的那些些文件的时间:但是改动了某些.h之类的文件最好用重新生成,因为有可能能有些文件包含.h文件也需要重新编译 选择生成或生成解决方案,将只编译自上次生成以来更改过的那些些项目文件和组件 注意 如果解决方案中包括多个项目,则生成命令将变成生成解决方案. 选择重新

Mysql中的常用工具

mysql:客户端连接工具 -u, --user=name ????指定用户名 -p --password????????指定密码 -h –host=hostname 指定服务器IP或者域名 -P –port=????????????指定端口 当然也可以在配置文件中指定用户名和密码,这样就不需要连接加上参数 [client] user=root password=redhat -e, --execute=commands:commands????????执行SQL语句并退出 -E, --vert

mysql中已经存在某个库中有大小写的表,将lower_case_table_names由0改为1对已经存在的表是否有影响?

需求描述: 今天遇到了修改lower_case_table_names参数的问题,想了下,如果原来里面有表,表名有大小写的, 如果将lower_case_table_names从默认的0改为1之后,那么对于原来的表有没有影响.做个实验,在此 记录下. 操作过程: 1.原来未修改之前,库中创建大小写区分的表 mysql> drop database test05; Query OK, 2 rows affected (0.05 sec) mysql> create database test05

mysql与oracle常用函数及数据类型对比

最近在转一个原来使用oracle,打算改为mysql的系统,有些常用的oracle函数的mysql实现顺便整理了下,主要是系统中涉及到的(其实原来是专门整理过一个详细doc的,只是每次找word麻烦). 特性 oracle mysql 字符串转日期 to_date str_to_date 日期类型 date 公元前4712年1月1日至公元9999年12月31日 datetime:取值范围:1000-01-01 00:00:00 到 9999-12-31 23:59:59 timestamp:取值

Mysql中的常用函数:

1.字符串函数: (1).合并字符串 concat():// concat('M','y',"SQL",'5.5');== MySQL5.5//当传入的参数有一个值为NULL,返回的结果值为NULL concat_ws();// 指定分隔符插入到字符串中:concat_ws(":",'2017','09');==2017:09,但如果分隔符是NULL的话,结果就为NULL,参数是NULL,不影响结果 (2).比较字符串大小的函数: select strcmp(字符串

在mysql中创建 oracle scott 用户的四个表及插入初始化数据

各表的字段的含义: (参考自:http://www.cnblogs.com/mchina/archive/2012/09/06/2649951.html) 1.  部门表:dept № 名称 类型 描述 1 DEPTNO NUMBER(2) 表示部门编号,由两位数字所组成 2 DNAME VARCHAR2(14) 部门名称,最多由14个字符所组成 3 LOC VARCHAR2(13) 部门所在的位置 2.  雇员表:emp № 名称 类型 描述 1 EMPNO NUMBER(4) 雇员的编号,由

MySQL中kill所有慢查询进程和锁表进程

1.kill所有慢查询进程: #!/bin/bash mysql -uroot -pMy_Password -e "show processlist" | grep -i "Query" > slow_query.log for query in `cat slow_query.log | awk '{print $1}'` do echo "kill $query;" > kill_slow_query.sql done 登录mys

mysql中如何创表以及添加各种约束条件

-- 使用数据库hr use hr; -- 在数据库中创建表-- ------------------------------------JOBS表------------------------------------------------------------ 判断数据库中是否存在表JOBSdrop table if exists JOBS;-- 创建表JOBScreate table JOBS ( JOB_ID VARCHAR(10) not null,-- 职位编号,主键 JOB_T