1、创建表格时添加: create table tablename(id int auto_increment primary key,...)
2、创建表格后添加: alter table tablename add id int auto_increment primary key
3、设置主键:alter table tablename add primary key(field_name);
4、重命名表: alter table table_old_name rename table_new_name;
5、改变字段的类型:alter table tableName modify field_name field_type;
6、重命名字段:alter table tableName change old_field_name new_field_name new_field_type;
7、删除字段:alter table tableName drop column field_name;
8、增加一个新字段:alter table tableName add new_field_name field_type;
alter table tableName add new_field_name field_type not null default '0';
9、新增一个字段,默认值为0,非空,自动增长,主键:alter table tabelname add new_field_name field_type default 0 not null auto_increment ,add primary key (new_field_name);
创建一个表
create table pre_common_usernotes (id int(8) not null primary key auto_increment, user_id char(20) not null, order_id char(20) not null, pub_id char(20) not null, ad_name char(20) , ad_id int(8), device char(20) , system_name char(20), channel int(8), price double(16,2), point int(8), ts int(10) not null default'0', sign char(30));
创建数据库并设置数据库默认字段编码格式
create database database_name default charset utf8 collate utf8_unicode_ci;
设置 auto_increment字段 的最小值
ALETER TABLE table_name AUTO_INCREMENT=100000
打开指定的库
use 库名
查看其他库的所有表
show tables from 库名
创建表
creat table 表名(列名,列类型)
查看表结构
dsc 表名;
查看服务器的版本
1.登录到mysql服务端
select version ();
2.没有登录到服务端
mysql--version或mysql--v
语法规范:
每条命令以;结尾或者/g结尾
每条命令根据需要可以进行缩进或换行
单行注释#注释 -- 注释
多行注释/*注释*/
select 查询列表 from 表名;--选择、过滤、查看
类似于Java中system out println(打印东西);
查询列表可以是常量值、表中的字段、表达式、函数
查询表中所有字段,1. select 双击 from 表名,选中内容点击F12改变格式
2.selsct * from 表名;(只能个按照顺序显示)
查询时,先使用命令use 库名打开库
mysql中的+只做运算符,select 字符+数值:先试图将字符转换为数值,若转换成功,则继续运算,否则转换成0
起别名:1.便于理解( 用AS或空格)
2.如果查询的字段有重名的情况,便于区分
去重:select distinct 查询事务 from 表名
concat连接字符串 如select concat(‘a’,‘b’,‘c’)
显示表的结构:desc 表名;
条件查询:
select 查询列表
from 表名
where 筛选条件
逻辑运算符:用于连接条件表达式
&&和and:两个都为true则为true,反之有一个为false则为false
||和or:只要有一个为true(出现),则为true,反之为false
!和not:如果连接的结果本身为false,结果为true
模糊查询:查询员工名中包含a的员工信息
select * from employees where lastname like ‘%a%’;
like的特点:一般和通配符搭配使用
通配符:%任意多个字符,包含零个字符
—:任意单个字符
例:查询员工名中第二个字符为_的员工名
selelct lastname
from employees
where lastname like '_b_%' escape 'b';#b为转义符\
is null:仅仅可以判断null值
<=>:安全等于,既可以判断null值,又可以判断普通数值
例如:查询员工号为176的员工的姓名,部门号和年薪
select lastname
department
salary*12*(1+ifnull(commissin_pact,0))
from
employees;
mysql中<>为不等于
MYSQL服务的启动和停止:
方式一:启动:net start 服务名 #启动命令行
#停止:net stop 服务名
方式二:计算机—右击—管理—服务
登录:mysql _h主机名 _p端口号 _u用户名_P密码 #如果连接本机且端口号是3306可省略_h和_p,_P和密码之间不能有空格
退出:exit或Ctrl+c
#查询时,字符型和日期型的常量必须用单引号引起来,数值型不需要
if null:判断某字段或表达式是否为null,如果为null,返回指定的值,如果不为null,返回原本的值
例:select ifnull (commission_pact,0)from employees;
isnull:判断某字段或表达式是否为null,如果是则返回1,否则返回0
字符函数:
1.length函数:
trim:去掉空格
select lpad(‘张三峰’,10,‘*’)as output
数学函数:
1.round函数:四舍五入
例如:select round(-1.55) 结果为-2,先对绝对值四舍五入,再加上正负号
select round(1.567,2)结果为1.57,保留两位小数
2.ceil函数:向上取整
例如:select ceil(1.002)结果为2#返回>=该参数的最小整数
select ceil(-1.02)结果为-1
3.floor函数:向下取整,返回<=该参数的最大整数
例如:select floor(-9.99)结果为-10
4.truncate截断函数:
例如:select truncate(1.69,1);结果为1.6
5.mode函数:取余函数
mode(a,b):a-a/b*b
例如:select mode(10,-3)#被除数为正数,则结果为正数
6.rand函数:获取随机数,返回0-1之间的小数
日期函数:
1.now函数:返回当前系统的日期加时间
select now();
2.curdate函数:返回当前系统的日期,不包含时间
curtime:返回当前的时间,不包含系统日期
获取指定的部分:select year(now())年;
select monthname(now());月
3.str_to_date函数:将字符通过指定的格式转换成日期
例如:select str_to_date('1998-3-2','%Y-%C-%D)AS output;
4.date_format函数:将日期转换成字符
例如:select date_format(now(),'%y年m月%d日‘)as output;
5.datediff:返回两个日期相差的天数
6.monthname:英文形式返回月
二:分组函数:用于统计,又叫聚合函数
1.sum:求和 avg:平均 count:计算个数
2.参数支持哪些类型
sum,avg适用于处理数值型
max,min,count适用于处理数值型和字符型即任何类型,一般使用count(*)统计行数
3.null是否参与运算:分组函数都忽略null值
4.和distinct搭配实现去重运算,如select sum(distinct 字段)from表名;
#和分组函数一起查询的字段有限制
分组查询:select 分组函数,列(要求出现在group by的后面)#分组后的字段 #5
from 表 #1
where 筛选条件 #2
group by 分组的列表 #3
having 分组后的筛选 #4
order by 字句 #6
例1:查询每个位置上的部门个数
select count(*),loaction_id
from 表名
group bylocation_id;
例2:查询邮箱中包含a字符的,每个部门的平均工资
select avg(salary),department——id
where email like '%a%'
group by department_id;
例3:查询哪个部门的员工个数>2
select count(*),department from employees
order by department_id
having count (*)>2; #having实现分组后的筛选
HAVING举例:
特点 :分组筛选:分组前筛选:处理原始表
分组后筛选:处理分组后的数据集
分组函数做条件肯定是放在having子句后面
例:
笛卡尔积:
#提高语句的简洁度
例:查询员工表的job_id中包含a和e的,并且a在e的前面
select job_id from employees where job_id like '%a&e%';
其他函数:password(‘字符’)返回该字符的密码
流程控制函数:
内连接:select 查询列表
from 表1,别名
inner join表二,别名
交叉连接:cross join
on 连接条件
分类:等值连接
多行子查询:
非等值连接
内连接
子查询:
联合查询:
union:将多条查询语句的结果合并成一个结果
查询语句1
union
查询语句2
插入数据:insert into 表名
select 语句1 union
select 语句2 union
修改字段名:update 表名 set 旧字段名=新字段名 where条件
清空表:truncate table 表名
修改表或者数据库的结构:alter
删除表或数据库:drop
库的修改:rename database 库名 to 新库名
更改库的字符集:alter datebase 库名 character set gbk;
修改列名:alter table 表名 change column 旧列名 新列名 类型;
修改列的类型或约束:alter table 表名 modify column 列名 类型
添加新列:alter table 表名 add column annual 新列
MySQL中六大约束:
not null:非空,用于保障该字段的值不能为空,比如姓名,学号等
default:默认,用于保证该字段有默认值,如性别
primary key:主键,用于保障该字段的值具有唯一性,并且非空,如学号,员工标号
union:唯一,用于保证该字段的值具有唯一性,可以为空,比如座位号,
check:检查约束,MySQL中不支持,比如年龄,性别
foreign key:外键,用于限制两个表的关系,用于保证该字段的值必须来自主表的关联列的值,在从表添加外键约束,用于引用主表中某列的值,如专业编号,员工表的部门编号,工种编号
添加约束的时机:
1.创建表时
2.修改表时
约束的添加分类:
1.列级约束:六大约束语法上都支持,但外键约束没有效果
2.表级约束:除了非空,默认,其他的都支持
使用数据库建立应用系统:
数据库的应用系统(C/S,B/S)开发:
集中式数据库系统:
缺点:数据集中处理造成通信开销大:
过分依赖主机造成系统可靠性低
系统的可扩充性也较差
C/S结构:包含一个服务器与多个客户机,他们之间由网络相连并通过接口进行交互,C端限制比较多,需开发客户端
特点:为了完成一个特定的任务,客户机上的程序可以和服务器上的程序协同工作,使系统的效率达到最高
客户端:代码一般用于完成用户的输入输出及数据的检查
服务端:代码完成对数据库的操作
三层C/S结构:客户机/应用服务器(处理特定的业务组件)/数据库服务器
应用服务器:接受应用程序发出的请求
1.客户机(表示层):主要提供客户的操作界面,不做或只做很少的计算功能,只运行向应用程序 服务器请求服务的代码,并显示其结果
2.应用服务器型:包含了应用系统中完成业务处理的代码,负责接收和处理对数据库的查询和操纵请求,这些代码是封装起来的,彼此独立的,将这些代码称为中间件或商业规则的组件
3.数据库层:安装在数据库服务器中,用于存放和管理用户数据,支持对数据的各种操作
三层结构优势:加入了应用服务器(包含业务处理代码),使的客户机和服务器都减轻了负担
结构优点:
1.由于业务处理代码都放在应用服务器端,一旦应用需求改变,只需要对应用服务器端进行升级即可,方便了系统的维护和升级
2.应用服务器同数据库服务器总是位于同一地点或同一局域网中,大量数据的频繁传送不会影响系统的整体性能
B/S:客户端浏览器运行html语言(格式化语言,只负责显示结构),php语言(动态语言)与后台数据库交互,css是描述html样式的语言,js运行在浏览器,显示一些动态的效果
交互式编码:给服务器提交
客户端程序只提供用户操作界面,应用软件只需安装在一台服务器(web服务器)上,数据库服务器端用于存放和管理数据
优势:最终应用软件的安装和维护都非常简单,客户端不在需要安装配置应用软件的工作
C/S与B/S的比较:
数据访问接口是应用程序访问数据库的通道,一般数据库管理系统支持两种两种数据访问接口:专用接口和通用接口
专用接口:与特定的数据库管理系统有关,不同的DBMS提供的专用接口不同,使用方法不同
通用接口:提供一种标准的访问方法,编程人员可以方便访问不同的数据库管理系统 。ODBC(开放数据库互联):微软公司开发的一套开放的数据库系统应用程序接口规范,提供了一组对数据库访问的标准API
体系:客户端应用程序
JDBC:由sun公司开发,能通过Java语言访问任何关系数据库的应用程序接口(API)
优势:扩充了java的应用范围,java应用程序通过JBDC API,可以向任何相应的数据库发送SQL语句,和java的结合使程序员可以只写一次应用软件便能在各种平台(操作系统,数据库系统等)上
OLE DB:是一系列直接处理数据的底层数据接口,可在不同数据进程间进行通信,使用OLE DB可以从任意类型计算机上的人已应用程序中访问任意类型的数据
ADO:是建筑在OLE DB之上的高层接口集,介于OLE DB底层接口和应用程序之间,提供的是一个对象模型,是面向对象的API
操作:使用数据库建立应用系统
‘&’运算符两边的操作数可以是字符型或者是数字型
‘+’运算符两边的操作数应均为字符型
程序的流程控制:
1.顺序结构
2.选择结构
3.循环结构
函数控制输出格式:
1.spc(n):用来在输出中插入空格符,n为要插入的空格数
2.tab(n):用来将插入点定位在绝对列号上,n为列号
多分支选择语句:select case<测试表达式>
case<表达式表1>
[<语句组1>]
[ case else
[<语句组n+1>]]
end select
visual Basic提供的循环语句有:
Do...Loop循环语句,For...Next循环语句
格式:for <循环变量>=<初值>to<终值>
[step<步长>]#可选项,默认为1
< 语句组1>
[exit for]
<语句组2>
next [<循环变量>]
VB过程:
采用事件过程;通用过程
VB采用事件驱动的工作方式,事件过程是指在响应窗体和控件的事件时执行,能够完成某向特定功能的代码段
通用过程:实现某项独立功能的代码段
过程:function过程 function
...
end function
格式:[private|public] [static]
function <函数名>([<形参表>])
sub 过程:
调用格式:call<过程名>[(<实参表>)]
格式二:<过程名>[<实参表>]
登录问题:隐藏关键url/扫描url碰撞出来
cookie:存放在本地,是一小块登录信息,明码容易泄密,服务器从cookie获取信息
session:可以用cookie,服务器创建一个数字值(session-id),存放到服务器——>发送到客户端(写到cookie或坠入url)
视图:
视图是从一个或多个表中导出的,视图的行为与表非常相似,是一个虚拟表
简化操作,安全,逻辑性
没有像素损失
创建视图:create view view_goods as select goods_names,goods_price from goods;
完成后运行:select * from view_goods