搜到的MYSQL简单样例:


Mysql

CREATE DATABASE  IF NOT EXISTS database20152
CHARACTER SET UTF8;


use database20152; #定位接下来要操作的数据库
CREATE TABLE IF NOT EXISTS 管理员表
(
管理员编号 INT NOT NULL auto_increment primary key,
密码 varchar(8)NOT NULL
);



CREATE TABLE IF NOT EXISTS 用户表
(
用户编号 int NOT NULL auto_increment primary key,
用户名 varchar(12) NOT NULL,
密码 varchar(8)NOT NULL,
高校 varchar(20),
专业 varchar(20),
出生日期 datetime,
联系电话 varchar(11),
电子邮箱 varchar(20),
备注 varchar(30),
签名 varchar(30)
);
#MYSQL貌似是要分号结尾分段
#show create database database20152;
#show create table 用户表;


create table IF NOT EXISTS 驾校基本信息表
(
驾校编号 int NOT NULL auto_increment primary key,
名称 varchar(12) not null,
建立日期 datetime,
地点 varchar(20),
招生范围 varchar(30),
科目考场 varchar(30),
教练人数 int,
价格 varchar(20),
优惠 varchar(30),
咨询电话 varchar(11),
口碑 varchar(30)
);



#drop procedure if exists 注册用户名验证
#存储过程
DELIMITER //
create procedure 注册用户名验证
(YHMing varchar(12))
begin
select COUNT(*) from 用户表 where 用户名=YHMing;
end //
DELIMITER ;


#drop procedure 注册用户名验证 ;
#drop table 管理员表;
#drop table 用户表;
#drop table 驾校基本信息表;


use database20152;
#select host,user,password from user
create user sqluser1 IDENTIFIED by 'sqltest123';#搜到的说mysql没有角色只有用户alter
#identified by 将纯文本密码加密作为散列值存储
grant insert,update,select on 用户表 to sqluser1;
grant execute on procedure 注册用户名验证 to sqluser1;


#尝试多次root读取增加存储过程正常,而用户sqluser1读正常,存储过程异常
#下面两句用于处理用户sqluser1访问存储过程权限
#否则error:execute command denied to user 'sqluser1'@'%' for routine 'database20152.注册用户名验证'
GRANT ALL PRIVILEGES ON *.* TO sqluser1 ;
FLUSH PRIVILEGES;


#下面两组存档未用
#grant select on mysql.proc to sqluser1;
#flush privileges;
#revoke select on mysql.proc from sqluser1;
#flush privileges;





 SQL

create database database20152
on
(
name=database20152_data,
filename='e:\DATA_SQL\database20152_data.mdf',--数据存放位置
size=4,
maxsize=10,
filegrowth=10%
)
log on
(
name=database20152_log,
filename='e:\DATA_SQL\database20152_log.ldf',--日志存放位置
size=1,
maxsize=6,
filegrowth=1
)
use database20152
create table 管理员表
(
管理员编号 int identity NOT NULL,
密码 varchar(8)not null,
primary key (管理员编号)
)
--use database20152
--drop table 管理员表
create table 用户表
(
用户编号 int identity NOT NULL primary key,
用户名 varchar(12) not null,
密码 varchar(8)not null,
高校 varchar(20),
专业 varchar(20),
出生日期 datetime,
年龄 int,
联系电话 varchar(11),
电子邮箱 varchar(20),
备注 varchar(30),
签名 varchar(30)
)
create table 驾校基本信息表
(
驾校编号 int identity NOT NULL primary key,
名称 varchar(12) not null,
建立日期 datetime,
地点 varchar(20),
招生范围 varchar(30),
科目考场 varchar(30),
教练人数 int,
价格 varchar(20),
优惠 varchar(30),
咨询电话 varchar(11),
口碑 varchar(30),
)
--或者下面增加主键
--alter table 管理员表
--add constraint uq_管理员编号 unique(管理员编号)
--alter table 用户表
--add constraint uq_用户编号 unique(用户编号)
--alter table 驾校基本信息表
--add constraint uq_驾校编号 unique(驾校编号)

--sql提示这个是批处理仅有的语句,应该就是单独执行,但是执行前要先定位在要操作的数据库中
--use database20152 --定位单独执行;
create procedure 注册用户名验证
@YHMing varchar(12)
as
begin
if @YHMing is null return
select COUNT(*)from 用户表 where 用户名=@YHMing
end

--测试存储过程
--use database20152
--declare @YHMing varchar(12)
--set @YHMing='1234'
--exec 注册用户名验证
--@YHMing

--创建用来登入sql的用户
create login sqluser一 with password='sqltest123'



--赋予sqluser一在数据库database20152中的身份testuser
use database20152
create user testuser for login sqluser一

use database20152
grant insert,update,select on 用户表 to testuser
grant exec on 注册用户名验证 to testuser